libdw: Handle .debug_loclists in dwarf_getlocation.
authorMark Wielaard <mark@klomp.org>
Sat, 7 Apr 2018 21:48:27 +0000 (23:48 +0200)
committerMark Wielaard <mark@klomp.org>
Tue, 29 May 2018 22:16:15 +0000 (00:16 +0200)
commit4dc31fde711c69fed6acfe18e7e57dfd5665cebb
tree1f8cac4d4e3a2da4314cf37410dd94cd418d47d8
parent7cfe2c16f9ddaa7478a2d97dd893c6b89080020a
libdw: Handle .debug_loclists in dwarf_getlocation.

Handle all new DW_LLE opcodes in .debug_loclists in dwarf_getlocation.
__libdw_read_begin_end_pair_inc now also handles a default location
(which is simply the range [0,-1]). Since expression blocks can now
also come from the .debug_loclists section add a new fake_loclists_cu
necessary for checking bounds while parsing expression blocks.

Adapt varlocs test to handle debug-only files.
Test testfileranges5.debug and testfilesplitranges5.debug with it.

Signed-off-by: Mark Wielaard <mark@klomp.org>
13 files changed:
libdw/ChangeLog
libdw/dwarf_begin_elf.c
libdw/dwarf_end.c
libdw/dwarf_getlocation.c
libdw/dwarf_getlocation_attr.c
libdw/dwarf_ranges.c
libdw/libdwP.h
libdw/libdw_findcu.c
src/ChangeLog
src/readelf.c
tests/ChangeLog
tests/run-varlocs.sh
tests/varlocs.c