2009-01-16 Kai Tietz <kai.tietz@onevision.com>
authorKai Tietz <kai.tietz@onevision.com>
Fri, 16 Jan 2009 15:09:20 +0000 (15:09 +0000)
committerKai Tietz <kai.tietz@onevision.com>
Fri, 16 Jan 2009 15:09:20 +0000 (15:09 +0000)
* coffcode.h (styp_to_sec_flags): Correct interpretation of
IMAGE_SCN_MEM_DISCARDABLE.

bfd/ChangeLog
bfd/coffcode.h

index 8622dff..3cac4b4 100644 (file)
@@ -1,3 +1,8 @@
+2009-01-16  Kai Tietz  <kai.tietz@onevision.com>
+
+       * coffcode.h (styp_to_sec_flags): Correct interpretation of
+       IMAGE_SCN_MEM_DISCARDABLE.
+
 2009-01-16  Alan Modra  <amodra@bigpond.net.au>
 
        * Makefile.am (libbfd_la_LIBADD, libbfd_la_LDFLAGS): Substitute
index 12d2ad5..db0b2e9 100644 (file)
@@ -1069,10 +1069,19 @@ styp_to_sec_flags (bfd *abfd,
          sec_flags &= ~ SEC_READONLY;
          break;
        case IMAGE_SCN_MEM_DISCARDABLE:
-         /* The MS PE spec sets the DISCARDABLE flag on .reloc sections
-            but we do not want them to be labelled as debug section, since
-            then strip would remove them.  */
-         if (! CONST_STRNEQ (name, ".reloc"))
+         /* The MS PE spec says that debug sections are DISCARDABLE,
+            but the presence of a DISCARDABLE flag does not necessarily
+            mean that a given section contains debug information.  Thus
+            we only set the SEC_DEBUGGING flag on sections that we
+            recognise as containing debug information.  */
+            if (CONST_STRNEQ (name, DOT_DEBUG)
+#ifdef _COMMENT
+             || strcmp (name, _COMMENT) == 0
+#endif
+#ifdef COFF_LONG_SECTION_NAMES
+             || CONST_STRNEQ (name, GNU_LINKONCE_WI)
+#endif
+             || CONST_STRNEQ (name, ".stab"))
            sec_flags |= SEC_DEBUGGING;
          break;
        case IMAGE_SCN_MEM_SHARED: