From: Paul Koning Date: Fri, 8 Jul 2005 21:42:33 +0000 (+0000) Subject: 2005-07-08 Paul Koning X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=d31ad6027e8ea0f7abbc1a9a417a9dddcef0ca09;p=pf3gnuchains%2Fpf3gnuchains3x.git 2005-07-08 Paul Koning * dwarf2.c (read_address): Check sign_extend_vma to handle targets where addresses are sign extended. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 30943c8980..cb029c64aa 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2005-07-08 Paul Koning + + * dwarf2.c (read_address): Check sign_extend_vma to handle targets + where addresses are sign extended. + 2005-07-08 Ralf Corsepius * config.bfd: Mark i960-*-rtems*, or32-*-rtems* as obsolete. diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c index d65fb68938..40883dd09e 100644 --- a/bfd/dwarf2.c +++ b/bfd/dwarf2.c @@ -347,16 +347,35 @@ read_indirect_string (struct comp_unit* unit, static bfd_uint64_t read_address (struct comp_unit *unit, bfd_byte *buf) { - switch (unit->addr_size) + int signed_vma = get_elf_backend_data (unit->abfd)->sign_extend_vma; + + if (signed_vma) { - case 8: - return bfd_get_64 (unit->abfd, buf); - case 4: - return bfd_get_32 (unit->abfd, buf); - case 2: - return bfd_get_16 (unit->abfd, buf); - default: - abort (); + switch (unit->addr_size) + { + case 8: + return bfd_get_signed_64 (unit->abfd, buf); + case 4: + return bfd_get_signed_32 (unit->abfd, buf); + case 2: + return bfd_get_signed_16 (unit->abfd, buf); + default: + abort (); + } + } + else + { + switch (unit->addr_size) + { + case 8: + return bfd_get_64 (unit->abfd, buf); + case 4: + return bfd_get_32 (unit->abfd, buf); + case 2: + return bfd_get_16 (unit->abfd, buf); + default: + abort (); + } } }