[PATCH] D56369: [SanitizerCoverage][NFC] Use appendToUsed instead of include
Jonathan Metzman via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 14 13:07:07 PST 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rL351118: [SanitizerCoverage][NFC] Use appendToUsed instead of include (authored by metzman, committed by ).
Herald added a subscriber: llvm-commits.
Changed prior to commit:
https://reviews.llvm.org/D56369?vs=180967&id=181633#toc
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D56369/new/
https://reviews.llvm.org/D56369
Files:
llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
llvm/trunk/test/Instrumentation/SanitizerCoverage/coff-used-ctor.ll
Index: llvm/trunk/test/Instrumentation/SanitizerCoverage/coff-used-ctor.ll
===================================================================
--- llvm/trunk/test/Instrumentation/SanitizerCoverage/coff-used-ctor.ll
+++ llvm/trunk/test/Instrumentation/SanitizerCoverage/coff-used-ctor.ll
@@ -0,0 +1,11 @@
+; Checks that sancov.module_ctor is marked used.
+; RUN: opt < %s -sancov -sanitizer-coverage-level=1 -sanitizer-coverage-inline-8bit-counters=1 -sanitizer-coverage-pc-table=1 -S | FileCheck %s
+target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-pc-windows-msvc19.14.26433"
+
+define void @foo() {
+entry:
+ ret void
+}
+
+; CHECK: @llvm.used = appending global {{.*}} @sancov.module_ctor
\ No newline at end of file
Index: llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
===================================================================
--- llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
+++ llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
@@ -264,7 +264,7 @@
SecEnd->setVisibility(GlobalValue::HiddenVisibility);
IRBuilder<> IRB(M.getContext());
Value *SecEndPtr = IRB.CreatePointerCast(SecEnd, Ty);
- if (TargetTriple.getObjectFormat() != Triple::COFF)
+ if (!TargetTriple.isOSBinFormatCOFF())
return std::make_pair(IRB.CreatePointerCast(SecStart, Ty), SecEndPtr);
// Account for the fact that on windows-msvc __start_* symbols actually
@@ -293,24 +293,15 @@
appendToGlobalCtors(M, CtorFunc, SanCtorAndDtorPriority);
}
- if (TargetTriple.getObjectFormat() == Triple::COFF) {
+ if (TargetTriple.isOSBinFormatCOFF()) {
// In COFF files, if the contructors are set as COMDAT (they are because
// COFF supports COMDAT) and the linker flag /OPT:REF (strip unreferenced
// functions and data) is used, the constructors get stripped. To prevent
- // this, give the constructors weak ODR linkage and tell the linker to
- // always include the sancov constructor. This way the linker can
- // deduplicate the constructors but always leave one copy.
+ // this, give the constructors weak ODR linkage and ensure the linker knows
+ // to include the sancov constructor. This way the linker can deduplicate
+ // the constructors but always leave one copy.
CtorFunc->setLinkage(GlobalValue::WeakODRLinkage);
- SmallString<20> PartialIncDirective("/include:");
- // Get constructor's mangled name in order to support i386.
- SmallString<40> MangledName;
- Mangler().getNameWithPrefix(MangledName, CtorFunc, true);
- Twine IncDirective = PartialIncDirective + MangledName;
- Metadata *Args[1] = {MDString::get(*C, IncDirective.str())};
- MDNode *MetadataNode = MDNode::get(*C, Args);
- NamedMDNode *NamedMetadata =
- M.getOrInsertNamedMetadata("llvm.linker.options");
- NamedMetadata->addOperand(MetadataNode);
+ appendToUsed(M, CtorFunc);
}
return CtorFunc;
}
@@ -833,7 +824,7 @@
std::string
SanitizerCoverageModule::getSectionName(const std::string &Section) const {
- if (TargetTriple.getObjectFormat() == Triple::COFF) {
+ if (TargetTriple.isOSBinFormatCOFF()) {
if (Section == SanCovCountersSectionName)
return ".SCOV$CM";
if (Section == SanCovPCsSectionName)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D56369.181633.patch
Type: text/x-patch
Size: 3281 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190114/e26a076f/attachment.bin>
More information about the llvm-commits
mailing list