aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/dwarf2.c19
2 files changed, 10 insertions, 14 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index cdf1a5d..16f061d 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2009-01-29 Adam Nemet <anemet@caviumnetworks.com>
+
+ * dwarf2.c (read_rangelist): Use read_address to read low_pc and
+ high_pc in order to properly sign-extend VMAs.
+
2009-01-29 Daniel Jacobowitz <dan@codesourcery.com>
Mark Shinwell <shinwell@codesourcery.com>
Catherine Moore <clm@codesourcery.com>
diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
index 4f2e38c..0c18253 100644
--- a/bfd/dwarf2.c
+++ b/bfd/dwarf2.c
@@ -1803,20 +1803,11 @@ read_rangelist (struct comp_unit *unit, struct arange *arange, bfd_uint64_t offs
bfd_vma low_pc;
bfd_vma high_pc;
- if (unit->addr_size == 4)
- {
- low_pc = read_4_bytes (unit->abfd, ranges_ptr);
- ranges_ptr += 4;
- high_pc = read_4_bytes (unit->abfd, ranges_ptr);
- ranges_ptr += 4;
- }
- else
- {
- low_pc = read_8_bytes (unit->abfd, ranges_ptr);
- ranges_ptr += 8;
- high_pc = read_8_bytes (unit->abfd, ranges_ptr);
- ranges_ptr += 8;
- }
+ low_pc = read_address (unit, ranges_ptr);
+ ranges_ptr += unit->addr_size;
+ high_pc = read_address (unit, ranges_ptr);
+ ranges_ptr += unit->addr_size;
+
if (low_pc == 0 && high_pc == 0)
break;
if (low_pc == -1UL && high_pc != -1UL)