From 4a97eb02bb0bcd6562f8777596e3bbad0045d7a4 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 24 Nov 2017 11:18:39 +0100 Subject: libdw: Add support for reading DW_FORM_addrx[1234] in .debug_addr. Recognize the new .debug_addr section. The CU will now hold a new address base offset in that section for that CU. dwarf_form_addr will decode DW_FORM_addrx[1234] and return addresses using that address base from the .debug_addr. A new internal function read_3ubyte_unaligned will try to read a 24-bit value depending on endianness of the underlying file. Signed-off-by: Mark Wielaard --- src/ChangeLog | 4 ++++ src/readelf.c | 5 +++++ 2 files changed, 9 insertions(+) (limited to 'src') diff --git a/src/ChangeLog b/src/ChangeLog index e8bd6bf1..3ca090dc 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2018-03-22 Mark Wielaard + + * readelf.c (attr_callback): Handle DW_FORM_addrx[1234]. + 2018-03-28 Mark Wielaard * readelf.c (handle_sysv_hash): Break bucket chain after nchain diff --git a/src/readelf.c b/src/readelf.c index 226b19be..9210b2ac 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -6072,6 +6072,11 @@ attr_callback (Dwarf_Attribute *attrp, void *arg) switch (form) { case DW_FORM_addr: + case DW_FORM_addrx: + case DW_FORM_addrx1: + case DW_FORM_addrx2: + case DW_FORM_addrx3: + case DW_FORM_addrx4: if (!cbargs->silent) { Dwarf_Addr addr; -- cgit v1.2.1