https://sourceware.org/bugzilla/show_bug.cgi?id=27805
Jim Wilson <wilson at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |wilson at gcc dot gnu.org
--- Comment #1 from Jim Wilson <wilson at gcc dot gnu.org> ---
Using readelf -wr to look at the debug_aranges section, I see entries like
Length: 44
Version: 2
Offset into .debug_info: 0x987
Pointer Size: 4
Segment Size: 0
Address Length
00000000 00000000
20400132 00000002
20400134 0000003a
00000000 00000000
An address/length entry of 0/0 is supposed to mark the end of the list, but
here we have one at the beginning. This is confusing elfutils which is trying
to move byte by byte through the aranges section. libdw/dwarf_aranges.c has
/* Two zero values mark the end. */
if (range_address == 0 && range_length == 0)
break;
and then assumes that the next entry is immediately following, which it isn't,
and it ends up reading garbage. binutils seems to be using the length field to
find the last entry. And readelf is ignoring the 0/0 end of list rule so that
we can see the invalid entries.
There are a lot of aranges that have 0/0 entries not at the end of the list.
--
You are receiving this mail because:
You are on the CC list for the bug.