2005-07-08 Paul Koning <pkoning@equallogic.com>
authorPaul Koning <pkoning@equallogic.com>
Fri, 8 Jul 2005 21:42:33 +0000 (21:42 +0000)
committerPaul Koning <pkoning@equallogic.com>
Fri, 8 Jul 2005 21:42:33 +0000 (21:42 +0000)
* dwarf2.c (read_address): Check sign_extend_vma to handle targets
where addresses are sign extended.

bfd/ChangeLog
bfd/dwarf2.c

index 30943c89804658a52c6d6c06c4c6eb3cc6cef108..cb029c64aabf1f77b0761c285d8ca9247e4d88d1 100644 (file)
@@ -1,3 +1,8 @@
+2005-07-08  Paul Koning  <pkoning@equallogic.com>
+
+       * dwarf2.c (read_address): Check sign_extend_vma to handle targets
+       where addresses are sign extended.
+
 2005-07-08  Ralf Corsepius <ralf.corsepius@rtems.org>
 
        * config.bfd: Mark i960-*-rtems*, or32-*-rtems* as obsolete.
index d65fb689388a08415bfb01a5a23708c6a6192d7a..40883dd09ed138ecfa5b0443b1a63361b479053f 100644 (file)
@@ -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 ();
+       }
     }
 }
 
This page took 0.032153 seconds and 4 git commands to generate.