summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@compnerd.org>2014-05-21 05:15:01 +0000
committerSaleem Abdulrasool <compnerd@compnerd.org>2014-05-21 05:15:01 +0000
commit8235ed1808c65ca8ebcc811c166387c24ff63083 (patch)
treeffc1a3df509c372e7ef40b7d3a044e0bc758e7ce
parent651f680b79947b345a5cd6ddb177483365e3b551 (diff)
downloadllvm-8235ed1808c65ca8ebcc811c166387c24ff63083.tar.gz
llvm-8235ed1808c65ca8ebcc811c166387c24ff63083.tar.bz2
llvm-8235ed1808c65ca8ebcc811c166387c24ff63083.tar.xz
MC: mark COFF .drectve section as REMOVE
The .drectve section should be marked as IMAGE_SCN_LNK_REMOVE. This matches what the MSVC toolchain does and accurately reflects that this section should not be emitted into the final binary. This section is merely information for the linker, comprising of additional linker directives. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209273 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/MC/MCObjectFileInfo.cpp2
-rw-r--r--test/MC/COFF/directive-section-characteristics.ll17
2 files changed, 18 insertions, 1 deletions
diff --git a/lib/MC/MCObjectFileInfo.cpp b/lib/MC/MCObjectFileInfo.cpp
index e4bcfa257f..e5377890da 100644
--- a/lib/MC/MCObjectFileInfo.cpp
+++ b/lib/MC/MCObjectFileInfo.cpp
@@ -739,7 +739,7 @@ void MCObjectFileInfo::InitCOFFMCObjectFileInfo(Triple T) {
DrectveSection =
Ctx->getCOFFSection(".drectve",
- COFF::IMAGE_SCN_LNK_INFO,
+ COFF::IMAGE_SCN_LNK_INFO | COFF::IMAGE_SCN_LNK_REMOVE,
SectionKind::getMetadata());
PDataSection =
diff --git a/test/MC/COFF/directive-section-characteristics.ll b/test/MC/COFF/directive-section-characteristics.ll
new file mode 100644
index 0000000000..ca8102af64
--- /dev/null
+++ b/test/MC/COFF/directive-section-characteristics.ll
@@ -0,0 +1,17 @@
+; RUN: llc -mtriple i686-windows -filetype obj -o - %s | llvm-readobj -sections \
+; RUN: | FileCheck %s
+
+define dllexport void @function() {
+entry:
+ ret void
+}
+
+; CHECK: Section {
+; CHECK: Name: .drectve
+; CHECK: Characteristics [
+; CHECK: IMAGE_SCN_ALIGN_1BYTES
+; CHECK: IMAGE_SCN_LNK_INFO
+; CHECK: IMAGE_SCN_LNK_REMOVE
+; CHECK: ]
+; CHECK: }
+