summaryrefslogtreecommitdiff
path: root/addr2line.c
diff options
context:
space:
mode:
authorYusuke Endoh <[email protected]>2022-12-22 22:34:34 +0900
committerYusuke Endoh <[email protected]>2022-12-23 00:32:35 +0900
commit515f816b7f3985e0cfa889a574c3b93274d50b6f ()
tree047e6dc2e9e1f315d38f696490542ff3fc0ddcbc /addr2line.c
parent5234f99b76689e7cf711961a737efd4de863460a (diff)
addr2line.c: Support DW_FORM_strx* forms
Notes: Merged: https://.com/ruby/ruby/pull/6993
-rw-r--r--addr2line.c24
1 files changed, 19 insertions, 5 deletions
@@ -1124,6 +1124,20 @@ get_cstr_value(DebugInfoValue *v)
}
}
static void
debug_info_reader_read_value(DebugInfoReader *reader, uint64_t form, DebugInfoValue *v)
{
@@ -1236,7 +1250,7 @@ debug_info_reader_read_value(DebugInfoReader *reader, uint64_t form, DebugInfoVa
set_uint_value(v, 1);
break;
case DW_FORM_strx:
- set_uint_value(v, uleb128(&reader->p));
break;
case DW_FORM_addrx:
set_addr_idx_value(v, uleb128(&reader->p));
@@ -1272,16 +1286,16 @@ debug_info_reader_read_value(DebugInfoReader *reader, uint64_t form, DebugInfoVa
set_uint_value(v, read_uint64(&reader->p));
break;
case DW_FORM_strx1:
- set_uint_value(v, read_uint8(&reader->p));
break;
case DW_FORM_strx2:
- set_uint_value(v, read_uint16(&reader->p));
break;
case DW_FORM_strx3:
- set_uint_value(v, read_uint24(&reader->p));
break;
case DW_FORM_strx4:
- set_uint_value(v, read_uint32(&reader->p));
break;
case DW_FORM_addrx1:
set_addr_idx_value(v, read_uint8(&reader->p));