diff options
author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2014-01-16 10:19:31 +0000 |
---|---|---|
committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2014-01-16 10:19:31 +0000 |
commit | d04b861e69a97c7fc0759a767d581deeead59ac2 (patch) | |
tree | d2267cd0b140fa8850b23414596b74b41e665bc1 /clang/lib | |
parent | 13665367a0ea3f7c14c6dae3b62052a03e785fae (diff) | |
download | bcm5719-llvm-d04b861e69a97c7fc0759a767d581deeead59ac2.tar.gz bcm5719-llvm-d04b861e69a97c7fc0759a767d581deeead59ac2.zip |
[asan] Remove -fsanitize-address-zero-base-shadow command line
flag from clang, and disable zero-base shadow support on all platforms
where it is not the default behavior.
- It is completely unused, as far as we know.
- It is ABI-incompatible with non-zero-base shadow, which means all
objects in a process must be built with the same setting. Failing to
do so results in a segmentation fault at runtime.
- It introduces a backward dependency of compiler-rt on user code,
which is uncommon and complicates testing.
This is the Clang part of a larger change.
llvm-svn: 199372
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/CodeGen/BackendUtil.cpp | 6 | ||||
-rw-r--r-- | clang/lib/Driver/SanitizerArgs.cpp | 21 | ||||
-rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 2 |
3 files changed, 4 insertions, 25 deletions
diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp index 23d1edf0779..d6d4f47dd68 100644 --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/lib/CodeGen/BackendUtil.cpp @@ -180,12 +180,10 @@ static void addAddressSanitizerPasses(const PassManagerBuilder &Builder, LangOpts.Sanitize.InitOrder, LangOpts.Sanitize.UseAfterReturn, LangOpts.Sanitize.UseAfterScope, - CGOpts.SanitizerBlacklistFile, - CGOpts.SanitizeAddressZeroBaseShadow)); + CGOpts.SanitizerBlacklistFile)); PM.add(createAddressSanitizerModulePass( LangOpts.Sanitize.InitOrder, - CGOpts.SanitizerBlacklistFile, - CGOpts.SanitizeAddressZeroBaseShadow)); + CGOpts.SanitizerBlacklistFile)); } static void addMemorySanitizerPass(const PassManagerBuilder &Builder, diff --git a/clang/lib/Driver/SanitizerArgs.cpp b/clang/lib/Driver/SanitizerArgs.cpp index 8e2811453b4..f2ac7b163f9 100644 --- a/clang/lib/Driver/SanitizerArgs.cpp +++ b/clang/lib/Driver/SanitizerArgs.cpp @@ -168,22 +168,9 @@ SanitizerArgs::SanitizerArgs(const ToolChain &TC, Args.hasFlag(options::OPT_fsanitize_memory_track_origins, options::OPT_fno_sanitize_memory_track_origins, /* Default */false); - - // Parse -f(no-)sanitize-address-zero-base-shadow options. - if (NeedsAsan) { - bool IsAndroid = (TC.getTriple().getEnvironment() == llvm::Triple::Android); - bool ZeroBaseShadowDefault = IsAndroid; + if (NeedsAsan) AsanZeroBaseShadow = - Args.hasFlag(options::OPT_fsanitize_address_zero_base_shadow, - options::OPT_fno_sanitize_address_zero_base_shadow, - ZeroBaseShadowDefault); - // Zero-base shadow is a requirement on Android. - if (IsAndroid && !AsanZeroBaseShadow) { - D.Diag(diag::err_drv_argument_not_allowed_with) - << "-fno-sanitize-address-zero-base-shadow" - << lastArgumentForKind(D, Args, Address); - } - } + (TC.getTriple().getEnvironment() == llvm::Triple::Android); } void SanitizerArgs::addArgs(const llvm::opt::ArgList &Args, @@ -206,10 +193,6 @@ void SanitizerArgs::addArgs(const llvm::opt::ArgList &Args, if (MsanTrackOrigins) CmdArgs.push_back(Args.MakeArgString("-fsanitize-memory-track-origins")); - if (AsanZeroBaseShadow) - CmdArgs.push_back( - Args.MakeArgString("-fsanitize-address-zero-base-shadow")); - // Workaround for PR16386. if (needsMsanRt()) CmdArgs.push_back(Args.MakeArgString("-fno-assume-sane-operator-new")); diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index bb20ae7952f..92202b7ee20 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -452,8 +452,6 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK, Opts.SanitizerBlacklistFile = Args.getLastArgValue(OPT_fsanitize_blacklist); Opts.SanitizeMemoryTrackOrigins = Args.hasArg(OPT_fsanitize_memory_track_origins); - Opts.SanitizeAddressZeroBaseShadow = - Args.hasArg(OPT_fsanitize_address_zero_base_shadow); Opts.SanitizeUndefinedTrapOnError = Args.hasArg(OPT_fsanitize_undefined_trap_on_error); Opts.SSPBufferSize = |