diff options
| author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2017-04-07 23:00:20 +0000 |
|---|---|---|
| committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2017-04-07 23:00:20 +0000 |
| commit | 349adbaccace178575426e1e54ccc6c090a9951e (patch) | |
| tree | c43903ca73bd99031008ac29e2bbabe4b42e05f5 /llvm/lib | |
| parent | bacee5c04f5c4810acf5065ed6e80e5372b9397a (diff) | |
| download | bcm5719-llvm-349adbaccace178575426e1e54ccc6c090a9951e.tar.gz bcm5719-llvm-349adbaccace178575426e1e54ccc6c090a9951e.zip | |
[cfi] Take over existing __cfi_check in CrossDSOCFI.
https://reviews.llvm.org/D31796 will emit a dummy __cfi_check in the
frontend.
llvm-svn: 299805
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Transforms/IPO/CrossDSOCFI.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/IPO/CrossDSOCFI.cpp b/llvm/lib/Transforms/IPO/CrossDSOCFI.cpp index ba2e60dee3b..e8738e70257 100644 --- a/llvm/lib/Transforms/IPO/CrossDSOCFI.cpp +++ b/llvm/lib/Transforms/IPO/CrossDSOCFI.cpp @@ -100,6 +100,9 @@ void CrossDSOCFI::buildCFICheck(Module &M) { "__cfi_check", Type::getVoidTy(Ctx), Type::getInt64Ty(Ctx), Type::getInt8PtrTy(Ctx), Type::getInt8PtrTy(Ctx), nullptr); Function *F = dyn_cast<Function>(C); + // Take over the existing function. The frontend emits a weak stub so that the + // linker knows about the symbol; this pass replaces the function body. + F->deleteBody(); F->setAlignment(4096); auto args = F->arg_begin(); Value &CallSiteTypeId = *(args++); |

