summaryrefslogtreecommitdiff
path: root/addr2line.c
diff options
context:
space:
mode:
-rw-r--r--addr2line.c40
1 files changed, 26 insertions, 14 deletions
@@ -1153,18 +1153,24 @@ resolve_strx(DebugInfoReader *reader, uint64_t idx)
}
static void
debug_info_reader_read_value(DebugInfoReader *reader, uint64_t form, DebugInfoValue *v)
{
switch (form) {
case DW_FORM_addr:
- if (reader->address_size == 4) {
- set_uint_value(v, read_uint32(&reader->p));
- } else if (reader->address_size == 8) {
- set_uint_value(v, read_uint64(&reader->p));
- } else {
- fprintf(stderr,"unknown address_size:%d", reader->address_size);
- abort();
- }
break;
case DW_FORM_block2:
v->size = read_uint16(&reader->p);
@@ -1216,13 +1222,19 @@ debug_info_reader_read_value(DebugInfoReader *reader, uint64_t form, DebugInfoVa
set_uint_value(v, read_uleb128(reader));
break;
case DW_FORM_ref_addr:
- if (reader->format == 4) {
- set_uint_value(v, read_uint32(&reader->p));
- } else if (reader->format == 8) {
- set_uint_value(v, read_uint64(&reader->p));
} else {
- fprintf(stderr,"unknown format:%d", reader->format);
- abort();
}
break;
case DW_FORM_ref1: