Beginning of a dwarf unwinder.

Sat Mar 29 11:14:38 2008  Søren Sandmann  <sandmann@redhat.com>

        * unwind.[ch], testunwind.c: Beginning of a dwarf unwinder.



svn path=/trunk/; revision=405
This commit is contained in:
Søren Sandmann
2008-03-29 16:00:33 +00:00
committed by Søren Sandmann Pedersen
parent 72ef8ca8c6
commit d2a6151f8d
9 changed files with 407 additions and 19 deletions

View File

@ -470,16 +470,20 @@ read_table (ElfParser *parser,
n_functions++;
#if 0
g_print (" symbol: %s: %lx\n", get_string_indirect (parser->parser,
parser->sym_format, "st_name",
str_table->offset), addr - parser->text_section->load_address);
g_print (" sym %d in %p (info: %d:%d) (func:global %d:%d)\n", addr, parser, info & 0xf, info >> 4, STT_FUNC, STB_GLOBAL);
g_print (" symbol: %s: %lx\n",
get_string_indirect (parser->parser,
parser->sym_format, "st_name",
str_table->offset),
addr - parser->text_section->load_address);
g_print (" sym %d in %p (info: %d:%d) (func:global %d:%d)\n",
addr, parser, info & 0xf, info >> 4, STT_FUNC, STB_GLOBAL);
#endif
}
else if (addr != 0)
{
#if 0
g_print (" rejecting %d in %p (info: %d:%d) (func:global %d:%d)\n", addr, parser, info & 0xf, info >> 4, STT_FUNC, STB_GLOBAL);
g_print (" rejecting %d in %p (info: %d:%d) (func:global %d:%d)\n",
addr, parser, info & 0xf, info >> 4, STT_FUNC, STB_GLOBAL);
#endif
}
@ -653,16 +657,29 @@ elf_parser_get_debug_link (ElfParser *parser, guint32 *crc32)
}
const guchar *
elf_parser_get_eh_frame (ElfParser *parser)
get_section (ElfParser *parser,
const char *name)
{
const Section *eh_frame = find_section (parser, ".eh_frame", SHT_PROGBITS);
const Section *section = find_section (parser, name, SHT_PROGBITS);
if (eh_frame)
return bin_parser_get_data (parser->parser) + eh_frame->offset;
if (section)
return bin_parser_get_data (parser->parser) + section->offset;
else
return NULL;
}
const guchar *
elf_parser_get_eh_frame (ElfParser *parser)
{
return get_section (parser, ".eh_frame");
}
const guchar *
elf_parser_get_debug_frame (ElfParser *parser)
{
return get_section (parser, ".debug_frame");
}
const char *
elf_parser_get_sym_name (ElfParser *parser,
const ElfSym *sym)