forked from OSchip/llvm-project
UBSan now uses prologue data instead of prefix data
As the semantics of prefix data has changed. See D6454. Patch by Ben Gamari! Test Plan: Testsuite Differential Revision: http://reviews.llvm.org/D6489 llvm-svn: 223190
This commit is contained in:
parent
51d2de7b9e
commit
1a0a9a3c75
|
@ -603,17 +603,17 @@ void CodeGenFunction::StartFunction(GlobalDecl GD,
|
|||
}
|
||||
|
||||
// If we are checking function types, emit a function type signature as
|
||||
// prefix data.
|
||||
// prologue data.
|
||||
if (getLangOpts().CPlusPlus && SanOpts.has(SanitizerKind::Function)) {
|
||||
if (const FunctionDecl *FD = dyn_cast_or_null<FunctionDecl>(D)) {
|
||||
if (llvm::Constant *PrefixSig =
|
||||
if (llvm::Constant *PrologueSig =
|
||||
CGM.getTargetCodeGenInfo().getUBSanFunctionSignature(CGM)) {
|
||||
llvm::Constant *FTRTTIConst =
|
||||
CGM.GetAddrOfRTTIDescriptor(FD->getType(), /*ForEH=*/true);
|
||||
llvm::Constant *PrefixStructElems[] = { PrefixSig, FTRTTIConst };
|
||||
llvm::Constant *PrefixStructConst =
|
||||
llvm::ConstantStruct::getAnon(PrefixStructElems, /*Packed=*/true);
|
||||
Fn->setPrefixData(PrefixStructConst);
|
||||
llvm::Constant *PrologueStructElems[] = { PrologueSig, FTRTTIConst };
|
||||
llvm::Constant *PrologueStructConst =
|
||||
llvm::ConstantStruct::getAnon(PrologueStructElems, /*Packed=*/true);
|
||||
Fn->setPrologueData(PrologueStructConst);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue