diff options
author | Alexey Samsonov <samsonov@google.com> | 2013-01-20 13:12:12 +0000 |
---|---|---|
committer | Alexey Samsonov <samsonov@google.com> | 2013-01-20 13:12:12 +0000 |
commit | 29524a98714e5a102ef7d68d5f668577d8e68ca4 (patch) | |
tree | 7c7612ea5399ab2f8725fc0fb2e851b7180c4d0a /clang/lib/CodeGen/BackendUtil.cpp | |
parent | 1b4fb3e08b28f12d508aec0bbdcb6f41cfb0ee38 (diff) | |
download | llvm-29524a98714e5a102ef7d68d5f668577d8e68ca4.zip llvm-29524a98714e5a102ef7d68d5f668577d8e68ca4.tar.gz llvm-29524a98714e5a102ef7d68d5f668577d8e68ca4.tar.bz2 |
Add top-level Clang flag -f(no-)sanitize-address-zero-base-shadow that makes AddressSanitizer use bottom of the address space for the shadow memory. On Linux it can be used with -fPIE/-pie to improve performance.
llvm-svn: 172974
Diffstat (limited to 'clang/lib/CodeGen/BackendUtil.cpp')
-rw-r--r-- | clang/lib/CodeGen/BackendUtil.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp index 8a3ee39..b938aac 100644 --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/lib/CodeGen/BackendUtil.cpp @@ -164,12 +164,16 @@ static void addAddressSanitizerPasses(const PassManagerBuilder &Builder, static_cast<const PassManagerBuilderWrapper&>(Builder); const CodeGenOptions &CGOpts = BuilderWrapper.getCGOpts(); const LangOptions &LangOpts = BuilderWrapper.getLangOpts(); - PM.add(createAddressSanitizerFunctionPass(LangOpts.Sanitize.InitOrder, - LangOpts.Sanitize.UseAfterReturn, - LangOpts.Sanitize.UseAfterScope, - CGOpts.SanitizerBlacklistFile)); - PM.add(createAddressSanitizerModulePass(LangOpts.Sanitize.InitOrder, - CGOpts.SanitizerBlacklistFile)); + PM.add(createAddressSanitizerFunctionPass( + LangOpts.Sanitize.InitOrder, + LangOpts.Sanitize.UseAfterReturn, + LangOpts.Sanitize.UseAfterScope, + CGOpts.SanitizerBlacklistFile, + CGOpts.SanitizeAddressZeroBaseShadow)); + PM.add(createAddressSanitizerModulePass( + LangOpts.Sanitize.InitOrder, + CGOpts.SanitizerBlacklistFile, + CGOpts.SanitizeAddressZeroBaseShadow)); } static void addMemorySanitizerPass(const PassManagerBuilder &Builder, @@ -177,7 +181,7 @@ static void addMemorySanitizerPass(const PassManagerBuilder &Builder, const PassManagerBuilderWrapper &BuilderWrapper = static_cast<const PassManagerBuilderWrapper&>(Builder); const CodeGenOptions &CGOpts = BuilderWrapper.getCGOpts(); - PM.add(createMemorySanitizerPass(CGOpts.MemorySanitizerTrackOrigins, + PM.add(createMemorySanitizerPass(CGOpts.SanitizeMemoryTrackOrigins, CGOpts.SanitizerBlacklistFile)); } |