* 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 3d727eaae681adde33f64f966ff825fc57c6fb7b..60ec244db69eb8811794f20e5b840979d1b07600 100644 (file)
@@ -1,3 +1,8 @@
+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.
index d4eb4aa617ff11066a528a806cea3aeef47d6715..426cf36ec647ee01eaca2d294e92eab4d1b2f9f7 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"),