From ec8c2db283e11fa798e459a1da8fd1da5014ed8e Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Wed, 21 May 2014 05:15:01 +0000 Subject: [PATCH] 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. llvm-svn: 209273 --- llvm/lib/MC/MCObjectFileInfo.cpp | 2 +- .../COFF/directive-section-characteristics.ll | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 llvm/test/MC/COFF/directive-section-characteristics.ll diff --git a/llvm/lib/MC/MCObjectFileInfo.cpp b/llvm/lib/MC/MCObjectFileInfo.cpp index e4bcfa257f69..e5377890da5b 100644 --- a/llvm/lib/MC/MCObjectFileInfo.cpp +++ b/llvm/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/llvm/test/MC/COFF/directive-section-characteristics.ll b/llvm/test/MC/COFF/directive-section-characteristics.ll new file mode 100644 index 000000000000..ca8102af641d --- /dev/null +++ b/llvm/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: } +