diff options
Diffstat (limited to 'libdw/dwarf_getlocation.c')
-rw-r--r-- | libdw/dwarf_getlocation.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/libdw/dwarf_getlocation.c b/libdw/dwarf_getlocation.c index 5df8cc6f..77f70ab9 100644 --- a/libdw/dwarf_getlocation.c +++ b/libdw/dwarf_getlocation.c @@ -415,11 +415,14 @@ dwarf_getlocation_addr (attr, address, llbufs, listlens, maxlocs) Dwarf_Addr begin; Dwarf_Addr end; - bool addr64 = attr->cu->address_size == 8; - Dwarf_Addr escape = addr64 ? (Elf64_Addr)-1 : (Elf64_Addr)(Elf32_Addr)-1; - - if (__libdw_read_addr_inc (attr->cu->dbg, &begin, &readp, addr64) - || __libdw_read_addr_inc (attr->cu->dbg, &end, &readp, addr64)) + Dwarf_Addr escape = ADDR_ESCAPE (attr->cu->address_size); + + if (__libdw_read_address_inc (attr->cu->dbg, + IDX_debug_line, &readp, + attr->cu->address_size, &begin) + || __libdw_read_address_inc (attr->cu->dbg, + IDX_debug_line, &readp, + attr->cu->address_size, &end)) goto invalid; if (begin == escape) |