mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-24 04:00:07 +08:00
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.
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
2020-09-23 Mark Wielaard <mark@klomp.org>
|
||||||
|
|
||||||
|
* 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.
|
||||||
|
|
||||||
2020-09-24 Nick Clifton <nickc@redhat.com>
|
2020-09-24 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
PR 26662
|
PR 26662
|
||||||
|
@ -2202,10 +2202,10 @@ read_and_display_attr_value (unsigned long attribute,
|
|||||||
case DW_FORM_ref_addr:
|
case DW_FORM_ref_addr:
|
||||||
if (dwarf_version == 2)
|
if (dwarf_version == 2)
|
||||||
SAFE_BYTE_GET_AND_INC (uvalue, data, pointer_size, end);
|
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);
|
SAFE_BYTE_GET_AND_INC (uvalue, data, offset_size, end);
|
||||||
else
|
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;
|
break;
|
||||||
|
|
||||||
@ -3419,6 +3419,7 @@ process_debug_info (struct dwarf_section * section,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (compunit.cu_unit_type != DW_UT_compile
|
if (compunit.cu_unit_type != DW_UT_compile
|
||||||
|
&& compunit.cu_unit_type != DW_UT_partial
|
||||||
&& compunit.cu_unit_type != DW_UT_type)
|
&& compunit.cu_unit_type != DW_UT_type)
|
||||||
{
|
{
|
||||||
warn (_("CU at offset %s contains corrupt or "
|
warn (_("CU at offset %s contains corrupt or "
|
||||||
|
Reference in New Issue
Block a user