mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-03-07 13:39:43 +08:00
[binutils] Handle DW_UT_skeleton/split_compile in process_debug_info
With this exec: ... $ gcc -gsplit-dwarf hello.c -gdwarf-5 ... we run into: ... $ readelf -w a.out > READELF readelf: Warning: CU at offset c7 contains corrupt or unsupported unit type: 4. readelf: Warning: CU at offset c7 contains corrupt or unsupported unit type: 4. ... Fix this by handling DW_UT_skeleton and DW_UT_split_compile in process_debug_info. Note that this just adds the parsing of DWO_id, but not yet any printing of it. Tested on x86_64-linux. binutils/ChangeLog: 2021-02-09 Tom de Vries <tdevries@suse.de> PR binutils/27386 * dwarf.c (process_debug_info): Handling DW_UT_skeleton and DW_UT_split_compile.
This commit is contained in:
parent
a57d17732e
commit
9b87f84a35
@ -1,3 +1,9 @@
|
||||
2021-02-09 Tom de Vries <tdevries@suse.de>
|
||||
|
||||
PR binutils/27386
|
||||
* dwarf.c (process_debug_info): Handling DW_UT_skeleton and
|
||||
DW_UT_split_compile.
|
||||
|
||||
2021-02-09 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* testsuite/lib/binutils-common.exp (supports_gnu_osabi): Remove
|
||||
|
@ -3581,6 +3581,13 @@ process_debug_info (struct dwarf_section * section,
|
||||
|
||||
SAFE_BYTE_GET_AND_INC (compunit.cu_abbrev_offset, hdrptr, offset_size, end);
|
||||
|
||||
if (compunit.cu_unit_type == DW_UT_split_compile
|
||||
|| compunit.cu_unit_type == DW_UT_skeleton)
|
||||
{
|
||||
uint64_t dwo_id;
|
||||
SAFE_BYTE_GET_AND_INC (dwo_id, hdrptr, 8, end);
|
||||
}
|
||||
|
||||
if (this_set == NULL)
|
||||
{
|
||||
abbrev_base = 0;
|
||||
@ -3684,6 +3691,13 @@ process_debug_info (struct dwarf_section * section,
|
||||
if (compunit.cu_version < 5)
|
||||
SAFE_BYTE_GET_AND_INC (compunit.cu_pointer_size, hdrptr, 1, end);
|
||||
|
||||
if (compunit.cu_unit_type == DW_UT_split_compile
|
||||
|| compunit.cu_unit_type == DW_UT_skeleton)
|
||||
{
|
||||
uint64_t dwo_id;
|
||||
SAFE_BYTE_GET_AND_INC (dwo_id, hdrptr, 8, end);
|
||||
}
|
||||
|
||||
/* PR 17512: file: 001-108546-0.001:0.1. */
|
||||
if (compunit.cu_pointer_size < 2 || compunit.cu_pointer_size > 8)
|
||||
{
|
||||
@ -3800,7 +3814,9 @@ 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)
|
||||
&& compunit.cu_unit_type != DW_UT_type
|
||||
&& compunit.cu_unit_type != DW_UT_split_compile
|
||||
&& compunit.cu_unit_type != DW_UT_skeleton)
|
||||
{
|
||||
warn (_("CU at offset %s contains corrupt or "
|
||||
"unsupported unit type: %d.\n"),
|
||||
|
Loading…
Reference in New Issue
Block a user