diff options
Diffstat (limited to 'addr2line.c')
-rw-r--r-- | addr2line.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/addr2line.c b/addr2line.c index 1c8de350d9..2f54c14162 100644 --- a/addr2line.c +++ b/addr2line.c @@ -840,7 +840,11 @@ enum DW_FORM_addrx1 = 0x29, DW_FORM_addrx2 = 0x2a, DW_FORM_addrx3 = 0x2b, - DW_FORM_addrx4 = 0x2c + DW_FORM_addrx4 = 0x2c, + + /* GNU extensions for referring to .gnu_debugaltlink dwz-compressed info */ + DW_FORM_GNU_ref_alt = 0x1f20, + DW_FORM_GNU_strp_alt = 0x1f21 }; /* Range list entry encodings */ @@ -1315,6 +1319,14 @@ debug_info_reader_read_value(DebugInfoReader *reader, uint64_t form, DebugInfoVa case DW_FORM_addrx4: set_addr_idx_value(v, read_uint32(&reader->p)); break; + /* we have no support for actually reading the real values of these refs out + * of the .gnu_debugaltlink dwz-compressed debuginfo at the moment, but "read" + * them anyway so that we advance the reader by the right amount. */ + case DW_FORM_GNU_ref_alt: + case DW_FORM_GNU_strp_alt: + read_uint(reader); + set_uint_value(v, 0); + break; case 0: goto fail; break; |