[binutils] Handle presence of both .debug_ranges and .debug_rnglists
authorTom de Vries <tdevries@suse.de>
Wed, 10 Feb 2021 11:30:46 +0000 (12:30 +0100)
committerTom de Vries <tdevries@suse.de>
Wed, 10 Feb 2021 11:30:46 +0000 (12:30 +0100)
commit52ff20fe7ba8e8de2660339fff5308ed932e2b32
tree4e690f3bfe0f2769938e5833d660da23074ca1a2
parentee4c3d88019ed88c3110e22cda16891aed14f818
[binutils] Handle presence of both .debug_ranges and .debug_rnglists

With exec:
...
$ g++ src/gdb/testsuite/gdb.cp/cpexprs.cc -gdwarf-5 -fdebug-types-section
...
I run into:
...
$ readelf -w a.out > READELF
readelf: Error: Invalid range list entry type 126
readelf: Error: Invalid range list entry type 60
...

The executable contains both a .debug_rnglists section (for CU
cpexprs.cc) and a .debug_ranges section (for other CUs, like crti.S).  But
when executing display_debug_ranges for say, section .debug_rnglists it also
tries to use the range list references related to section .debug_ranges.

Fix this by filtering out the .debug_range references when handling
.debug_rnglists and vice versa.

binutils/ChangeLog:

2021-02-10  Tom de Vries  <tdevries@suse.de>

PR binutils/27371
* dwarf.c (display_debug_ranges): Filter range lists according to
section.
binutils/ChangeLog
binutils/dwarf.c