diff options
author | Mark Wielaard <mark@klomp.org> | 2020-09-23 16:31:14 +0200 |
---|---|---|
committer | Mark Wielaard <mark@klomp.org> | 2020-09-24 22:52:57 +0200 |
commit | ec47b32a85294af959457ad19bd98dd13f6389fd (patch) | |
tree | 251b843adb9a3689d40d2d819d66fea9fc0cba05 /binutils/dwarf.c | |
parent | 29363cfa40b59aca282a0b3b2ba4c305f6ff8f79 (diff) | |
download | gdb-ec47b32a85294af959457ad19bd98dd13f6389fd.zip gdb-ec47b32a85294af959457ad19bd98dd13f6389fd.tar.gz gdb-ec47b32a85294af959457ad19bd98dd13f6389fd.tar.bz2 |
binutils: Handle DWARF5 DW_FORM_ref_addr and DW_UT_partial.
dwz in DWARF5 mode might produce DW_UT_partial unit types, which are
the same as DW_UT_compile unit types (but start with a DW_TAG_partial_unit)
and it might produce DW_FORM_ref_addr to create a reference between
units. Accept both constructs.
binutils/ChangeLog:
* dwarf.c (read_and_display_attr_value): Handle DW_FORM_ref_addr
for dwarf_version 5 just as version 3 and 4 (only 2 is different).
(process_debug_info): Allow DW_UT_partial.
Diffstat (limited to 'binutils/dwarf.c')
-rw-r--r-- | binutils/dwarf.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/binutils/dwarf.c b/binutils/dwarf.c index 6031692..9e98794 100644 --- a/binutils/dwarf.c +++ b/binutils/dwarf.c @@ -2202,10 +2202,10 @@ read_and_display_attr_value (unsigned long attribute, case DW_FORM_ref_addr: if (dwarf_version == 2) SAFE_BYTE_GET_AND_INC (uvalue, data, pointer_size, end); - else if (dwarf_version == 3 || dwarf_version == 4) + else if (dwarf_version > 2) SAFE_BYTE_GET_AND_INC (uvalue, data, offset_size, end); else - error (_("Internal error: DWARF version is not 2, 3 or 4.\n")); + error (_("Internal error: DW_FORM_ref_addr is not supported in DWARF version 1.\n")); break; @@ -3419,6 +3419,7 @@ process_debug_info (struct dwarf_section * section, } if (compunit.cu_unit_type != DW_UT_compile + && compunit.cu_unit_type != DW_UT_partial && compunit.cu_unit_type != DW_UT_type) { warn (_("CU at offset %s contains corrupt or " |