summaryrefslogtreecommitdiff
path: root/bfd/coffcode.h
diff options
context:
space:
mode:
authorKai Tietz <kai.tietz@onevision.com>2009-01-16 15:09:20 +0000
committerKai Tietz <kai.tietz@onevision.com>2009-01-16 15:09:20 +0000
commit07d7c7f6606c949d1d292d8014152945675bc5ae (patch)
tree7f215718b08d3234ec923e845be6b0540055761d /bfd/coffcode.h
parentd6421bfbb444175f815a1067ddcaf9803a37ac69 (diff)
downloadbinutils-redhat-07d7c7f6606c949d1d292d8014152945675bc5ae.tar.gz
2009-01-16 Kai Tietz <kai.tietz@onevision.com>
* coffcode.h (styp_to_sec_flags): Correct interpretation of IMAGE_SCN_MEM_DISCARDABLE.
Diffstat (limited to 'bfd/coffcode.h')
-rw-r--r--bfd/coffcode.h17
1 files changed, 13 insertions, 4 deletions
diff --git a/bfd/coffcode.h b/bfd/coffcode.h
index 12d2ad5f2c..db0b2e9006 100644
--- a/bfd/coffcode.h
+++ b/bfd/coffcode.h
@@ -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: