diff options
| author | Tomasz Miąsko <tomasz.miasko@gmail.com> | 2019-11-18 00:00:00 +0000 | 
|---|---|---|
| committer | Tomasz Miąsko <tomasz.miasko@gmail.com> | 2019-11-22 19:31:43 +0100 | 
| commit | 317f68ab10c04719d54265f92784618afed914b6 (patch) | |
| tree | 759e32510ce39cc7ad0783c182fd0343a3e98ec6 /src/rustllvm/PassWrapper.cpp | |
| parent | bd816fd76f4f7a040ca7ac8ca5bc556d761f96fa (diff) | |
| download | rust-317f68ab10c04719d54265f92784618afed914b6.tar.gz rust-317f68ab10c04719d54265f92784618afed914b6.zip | |
Move sanitizer passes creation from ssa to llvm
Diffstat (limited to 'src/rustllvm/PassWrapper.cpp')
| -rw-r--r-- | src/rustllvm/PassWrapper.cpp | 26 | 
1 files changed, 26 insertions, 0 deletions
| diff --git a/src/rustllvm/PassWrapper.cpp b/src/rustllvm/PassWrapper.cpp index 3451346869d..48cdb6beccc 100644 --- a/src/rustllvm/PassWrapper.cpp +++ b/src/rustllvm/PassWrapper.cpp @@ -18,6 +18,9 @@ #include "llvm/Transforms/IPO/PassManagerBuilder.h" #include "llvm/Transforms/IPO/AlwaysInliner.h" #include "llvm/Transforms/IPO/FunctionImport.h" +#include "llvm/Transforms/Instrumentation/AddressSanitizer.h" +#include "llvm/Transforms/Instrumentation/MemorySanitizer.h" +#include "llvm/Transforms/Instrumentation/ThreadSanitizer.h" #include "llvm/Transforms/Utils/FunctionImportUtils.h" #include "llvm/LTO/LTO.h" @@ -76,6 +79,29 @@ extern "C" LLVMPassRef LLVMRustFindAndCreatePass(const char *PassName) { return nullptr; } +extern "C" LLVMPassRef LLVMRustCreateAddressSanitizerFunctionPass(bool Recover) { + const bool CompileKernel = false; + + return wrap(createAddressSanitizerFunctionPass(CompileKernel, Recover)); +} + +extern "C" LLVMPassRef LLVMRustCreateModuleAddressSanitizerPass(bool Recover) { + const bool CompileKernel = false; + + return wrap(createModuleAddressSanitizerLegacyPassPass(CompileKernel, Recover)); +} + +extern "C" LLVMPassRef LLVMRustCreateMemorySanitizerPass(int TrackOrigins, bool Recover) { + const bool CompileKernel = false; + + return wrap(createMemorySanitizerLegacyPassPass( + MemorySanitizerOptions{TrackOrigins, Recover, CompileKernel})); +} + +extern "C" LLVMPassRef LLVMRustCreateThreadSanitizerPass() { + return wrap(createThreadSanitizerLegacyPassPass()); +} + extern "C" LLVMRustPassKind LLVMRustPassKind(LLVMPassRef RustPass) { assert(RustPass); Pass *Pass = unwrap(RustPass); | 
