Revert "[asan] Delay creation of asan ctor."
Speculative revert. Some libfuzzer tests are affected. This reverts commit r298731. llvm-svn: 298890
This commit is contained in:
@@ -138,17 +138,6 @@ Function *llvm::checkSanitizerInterfaceFunction(Constant *FuncOrBitcast) {
|
||||
report_fatal_error(Err);
|
||||
}
|
||||
|
||||
Function *llvm::declareSanitizerInitFunction(Module &M, StringRef InitName,
|
||||
ArrayRef<Type *> InitArgTypes) {
|
||||
assert(!InitName.empty() && "Expected init function name");
|
||||
Function *F = checkSanitizerInterfaceFunction(M.getOrInsertFunction(
|
||||
InitName,
|
||||
FunctionType::get(Type::getVoidTy(M.getContext()), InitArgTypes, false),
|
||||
AttributeList()));
|
||||
F->setLinkage(Function::ExternalLinkage);
|
||||
return F;
|
||||
}
|
||||
|
||||
std::pair<Function *, Function *> llvm::createSanitizerCtorAndInitFunctions(
|
||||
Module &M, StringRef CtorName, StringRef InitName,
|
||||
ArrayRef<Type *> InitArgTypes, ArrayRef<Value *> InitArgs,
|
||||
@@ -156,13 +145,16 @@ std::pair<Function *, Function *> llvm::createSanitizerCtorAndInitFunctions(
|
||||
assert(!InitName.empty() && "Expected init function name");
|
||||
assert(InitArgs.size() == InitArgTypes.size() &&
|
||||
"Sanitizer's init function expects different number of arguments");
|
||||
Function *InitFunction =
|
||||
declareSanitizerInitFunction(M, InitName, InitArgTypes);
|
||||
Function *Ctor = Function::Create(
|
||||
FunctionType::get(Type::getVoidTy(M.getContext()), false),
|
||||
GlobalValue::InternalLinkage, CtorName, &M);
|
||||
BasicBlock *CtorBB = BasicBlock::Create(M.getContext(), "", Ctor);
|
||||
IRBuilder<> IRB(ReturnInst::Create(M.getContext(), CtorBB));
|
||||
Function *InitFunction =
|
||||
checkSanitizerInterfaceFunction(M.getOrInsertFunction(
|
||||
InitName, FunctionType::get(IRB.getVoidTy(), InitArgTypes, false),
|
||||
AttributeList()));
|
||||
InitFunction->setLinkage(Function::ExternalLinkage);
|
||||
IRB.CreateCall(InitFunction, InitArgs);
|
||||
if (!VersionCheckName.empty()) {
|
||||
Function *VersionCheckFunction =
|
||||
|
||||
Reference in New Issue
Block a user