* dwarf.c (display_debug_loc): Correct test for base address
authorAlan Modra <amodra@gmail.com>
Tue, 29 Jan 2008 02:55:48 +0000 (02:55 +0000)
committerAlan Modra <amodra@gmail.com>
Tue, 29 Jan 2008 02:55:48 +0000 (02:55 +0000)
entry when 64-bit host dumping 32-bit object.

binutils/ChangeLog
binutils/dwarf.c

index 3d727ea..60ec244 100644 (file)
@@ -1,5 +1,10 @@
 2008-01-29  Alan Modra  <amodra@bigpond.net.au>
 
+       * dwarf.c (display_debug_loc): Correct test for base address
+       entry when 64-bit host dumping 32-bit object.
+
+2008-01-29  Alan Modra  <amodra@bigpond.net.au>
+
        * MAINTAINERS: Remove myself as ix86 maintainer.  Add for SPU.
 
 2008-01-28  Nick Clifton  <nickc@redhat.com>
index d4eb4aa..426cf36 100644 (file)
@@ -2618,6 +2618,7 @@ display_debug_loc (struct dwarf_section *section, void *file)
     {
       unsigned long begin;
       unsigned long end;
+      unsigned long minus_one;
       unsigned short length;
       unsigned long offset;
       unsigned int pointer_size;
@@ -2678,7 +2679,10 @@ display_debug_loc (struct dwarf_section *section, void *file)
                }
 
              /* Check base address specifiers.  */
-             if (begin == -1UL && end != -1UL)
+             minus_one = -1;
+             if (pointer_size < sizeof (minus_one))
+               minus_one = (1L << (pointer_size * 8)) - 1;
+             if (begin == minus_one && end != minus_one)
                {
                  base_address = end;
                  printf (_("    %8.8lx %8.8lx %8.8lx (base address)\n"),