[llvm] r236786 - Revert "SanitizerCoverage: Use `createSanitizerCtor` to create ctor and call init"
Ismail Pazarbasi
ismail.pazarbasi at gmail.com
Thu May 7 15:17:48 PDT 2015
Author: ismailp
Date: Thu May 7 17:17:48 2015
New Revision: 236786
URL: http://llvm.org/viewvc/llvm-project?rev=236786&view=rev
Log:
Revert "SanitizerCoverage: Use `createSanitizerCtor` to create ctor and call init"
Will fix tomorrow. Unbreak build bots now.
Modified:
llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
Modified: llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp?rev=236786&r1=236785&r2=236786&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp (original)
+++ llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp Thu May 7 17:17:48 2015
@@ -156,6 +156,7 @@ class SanitizerCoverageModule : public M
Function *SanCovFunction;
Function *SanCovWithCheckFunction;
Function *SanCovIndirCallFunction;
+ Function *SanCovModuleInit;
Function *SanCovTraceEnter, *SanCovTraceBB;
Function *SanCovTraceCmpFunction;
InlineAsm *EmptyAsm;
@@ -183,6 +184,12 @@ bool SanitizerCoverageModule::runOnModul
Type *Int32PtrTy = PointerType::getUnqual(IRB.getInt32Ty());
Int64Ty = IRB.getInt64Ty();
+ Function *CtorFunc =
+ Function::Create(FunctionType::get(VoidTy, false),
+ GlobalValue::InternalLinkage, kSanCovModuleCtorName, &M);
+ ReturnInst::Create(*C, BasicBlock::Create(*C, "", CtorFunc));
+ appendToGlobalCtors(M, CtorFunc, kSanCtorAndDtorPriority);
+
SanCovFunction = checkSanitizerInterfaceFunction(
M.getOrInsertFunction(kSanCovName, VoidTy, Int32PtrTy, nullptr));
SanCovWithCheckFunction = checkSanitizerInterfaceFunction(
@@ -194,6 +201,10 @@ bool SanitizerCoverageModule::runOnModul
checkSanitizerInterfaceFunction(M.getOrInsertFunction(
kSanCovTraceCmp, VoidTy, Int64Ty, Int64Ty, Int64Ty, nullptr));
+ SanCovModuleInit = checkSanitizerInterfaceFunction(M.getOrInsertFunction(
+ kSanCovModuleInitName, VoidTy, Int32PtrTy, IntptrTy,
+ Int8PtrTy, Int8PtrTy, nullptr));
+ SanCovModuleInit->setLinkage(Function::ExternalLinkage);
// We insert an empty inline asm after cov callbacks to avoid callback merge.
EmptyAsm = InlineAsm::get(FunctionType::get(IRB.getVoidTy(), false),
StringRef(""), StringRef(""),
@@ -259,21 +270,15 @@ bool SanitizerCoverageModule::runOnModul
new GlobalVariable(M, ModNameStrConst->getType(), true,
GlobalValue::PrivateLinkage, ModNameStrConst);
- ArrayRef<Value *> InitArgs = {
- IRB.CreatePointerCast(RealGuardArray, Int32PtrTy),
+ // Call __sanitizer_cov_module_init
+ IRB.SetInsertPoint(CtorFunc->getEntryBlock().getTerminator());
+ IRB.CreateCall4(
+ SanCovModuleInit, IRB.CreatePointerCast(RealGuardArray, Int32PtrTy),
ConstantInt::get(IntptrTy, N),
Options.Use8bitCounters
? IRB.CreatePointerCast(RealEightBitCounterArray, Int8PtrTy)
: Constant::getNullValue(Int8PtrTy),
- IRB.CreatePointerCast(ModuleName, Int8PtrTy)};
-
- Function *CtorFunc;
- std::tie(CtorFunc, std::ignore) = createSanitizerCtorAndInitFunctions(
- M, kSanCovModuleCtorName, kSanCovModuleInitName,
- {Int32PtrTy, IntptrTy, Int8PtrTy, Int8PtrTy}, InitArgs);
-
- appendToGlobalCtors(M, CtorFunc, kSanCtorAndDtorPriority);
-
+ IRB.CreatePointerCast(ModuleName, Int8PtrTy));
return true;
}
More information about the llvm-commits
mailing list