* readelf.c (display_debug_section): Do not display debug sections
authorNick Clifton <nickc@redhat.com>
Thu, 28 May 2009 11:02:22 +0000 (11:02 +0000)
committerNick Clifton <nickc@redhat.com>
Thu, 28 May 2009 11:02:22 +0000 (11:02 +0000)
        with the NOBITS section type.

binutils/ChangeLog
binutils/readelf.c

index ed09c83fd34f658a24c6e561a45f2808c43a1826..cf3eaecece9139eba5c404c54d894a4089b0de76 100644 (file)
@@ -1,3 +1,8 @@
+2009-05-28  Nick Clifton  <nickc@redhat.com>
+
+       * readelf.c (display_debug_section): Do not display debug sections
+       with the NOBITS section type.
+
 2009-05-27  Nathan Sidwell  <nathan@codesourcery.com>
 
        * sysdump.c (tab): Use puts rather than two printfs.
index 30bcf6672b0fa8075503da2e5e3a123980fc7340..4727a840cbcf35a65c10de328162ecc1eeda6faa 100644 (file)
@@ -8539,6 +8539,15 @@ display_debug_section (Elf_Internal_Shdr * section, FILE * file)
       printf (_("\nSection '%s' has no debugging data.\n"), name);
       return 0;
     }
+  if (section->sh_type == SHT_NOBITS)
+    {
+      /* There is no point in dumping the contents of a debugging section
+        which has the NOBITS type - the bits in the file will be random.
+        This can happen when a file containing a .eh_frame section is
+        stripped with the --only-keep-debug command line option.  */
+      printf (_("section '%s' has the NOBITS type - its contents are unreliable.\n"), name);
+      return 0;
+    }
 
   if (const_strneq (name, ".gnu.linkonce.wi."))
     name = ".debug_info";