From ecbb8cdd8b500e37dc34fc246b912f704fe31ca4 Mon Sep 17 00:00:00 2001 From: Petr Machata Date: Wed, 29 Apr 2009 15:16:09 +0200 Subject: [PATCH] dwarf_ranges and dwarf_formref use read hooks --- libdw/dwarf_formref.c | 8 ++++---- libdw/dwarf_ranges.c | 29 +++++++++++------------------ 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/libdw/dwarf_formref.c b/libdw/dwarf_formref.c index b8463b70b..3595184cd 100644 --- a/libdw/dwarf_formref.c +++ b/libdw/dwarf_formref.c @@ -79,11 +79,11 @@ __libdw_formref (attr, return_offset) break; case DW_FORM_ref4: - *return_offset = read_4ubyte_unaligned (attr->cu->dbg, attr->valp); - break; - case DW_FORM_ref8: - *return_offset = read_8ubyte_unaligned (attr->cu->dbg, attr->valp); + if (__libdw_read_offset (attr->cu->dbg, IDX_debug_info, attr->valp, + attr->form == DW_FORM_ref4 ? 4 : 8, + return_offset)) + return -1; break; case DW_FORM_ref_udata: diff --git a/libdw/dwarf_ranges.c b/libdw/dwarf_ranges.c index 1eef617b5..7dbfb9f54 100644 --- a/libdw/dwarf_ranges.c +++ b/libdw/dwarf_ranges.c @@ -142,25 +142,18 @@ dwarf_ranges (Dwarf_Die *die, ptrdiff_t offset, Dwarf_Addr *basep, Dwarf_Addr begin; Dwarf_Addr end; - if (die->cu->address_size == 8) + if (__libdw_read_address_inc (die->cu->dbg, + IDX_debug_ranges, &readp, + die->cu->address_size, &begin) + || __libdw_read_address_inc (die->cu->dbg, + IDX_debug_ranges, &readp, + die->cu->address_size, &end)) + return -1l; + + if (begin == ADDR_ESCAPE (die->cu->address_size)) { - begin = read_8ubyte_unaligned_inc (die->cu->dbg, readp); - end = read_8ubyte_unaligned_inc (die->cu->dbg, readp); - if (begin == (uint64_t) -1l) /* Base address entry. */ - { - *basep = end; - goto next; - } - } - else - { - begin = read_4ubyte_unaligned_inc (die->cu->dbg, readp); - end = read_4ubyte_unaligned_inc (die->cu->dbg, readp); - if (begin == (uint32_t) -1) /* Base address entry. */ - { - *basep = end; - goto next; - } + *basep = end; + goto next; } if (begin == 0 && end == 0) /* End of list entry. */ -- 2.47.2