diff options
| author | Ivan Krasin <krasin@chromium.org> | 2015-09-02 20:02:38 +0000 |
|---|---|---|
| committer | Ivan Krasin <krasin@chromium.org> | 2015-09-02 20:02:38 +0000 |
| commit | 4c3f237edb3ed7f0fe1b21708ad02f0ce0b6dac2 (patch) | |
| tree | ac86b6c98886f2705d0713e7fd8b27bdda4d2839 /clang/lib | |
| parent | a24296b459660924f4c9f50321c0c0bf6ca1ee89 (diff) | |
| download | bcm5719-llvm-4c3f237edb3ed7f0fe1b21708ad02f0ce0b6dac2.tar.gz bcm5719-llvm-4c3f237edb3ed7f0fe1b21708ad02f0ce0b6dac2.zip | |
Do not include default sanitizer blacklists into -M/-MM/-MD/-MMD output.
Summary:
Do not include default sanitizer blacklists into -M/-MM/-MD/-MMD output.
Introduce a frontend option -fdepfile-entry, and only insert them
for the user-defined sanitizer blacklists. In frontend, grab ExtraDeps
from -fdepfile-entry, instead of -fsanitize-blacklist.
Reviewers: rsmith, pcc
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D12544
llvm-svn: 246700
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/Driver/SanitizerArgs.cpp | 13 | ||||
| -rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 2 |
2 files changed, 12 insertions, 3 deletions
diff --git a/clang/lib/Driver/SanitizerArgs.cpp b/clang/lib/Driver/SanitizerArgs.cpp index 3b3984c7197..dee0dcfa49d 100644 --- a/clang/lib/Driver/SanitizerArgs.cpp +++ b/clang/lib/Driver/SanitizerArgs.cpp @@ -176,6 +176,7 @@ void SanitizerArgs::clear() { RecoverableSanitizers.clear(); TrapSanitizers.clear(); BlacklistFiles.clear(); + ExtraDeps.clear(); CoverageFeatures = 0; MsanTrackOrigins = 0; MsanUseAfterDtor = false; @@ -383,13 +384,16 @@ SanitizerArgs::SanitizerArgs(const ToolChain &TC, if (Arg->getOption().matches(options::OPT_fsanitize_blacklist)) { Arg->claim(); std::string BLPath = Arg->getValue(); - if (llvm::sys::fs::exists(BLPath)) + if (llvm::sys::fs::exists(BLPath)) { BlacklistFiles.push_back(BLPath); - else + ExtraDeps.push_back(BLPath); + } else D.Diag(clang::diag::err_drv_no_such_file) << BLPath; + } else if (Arg->getOption().matches(options::OPT_fno_sanitize_blacklist)) { Arg->claim(); BlacklistFiles.clear(); + ExtraDeps.clear(); } } // Validate blacklists format. @@ -563,6 +567,11 @@ void SanitizerArgs::addArgs(const ToolChain &TC, const llvm::opt::ArgList &Args, BlacklistOpt += BLPath; CmdArgs.push_back(Args.MakeArgString(BlacklistOpt)); } + for (const auto &Dep : ExtraDeps) { + SmallString<64> ExtraDepOpt("-fdepfile-entry="); + ExtraDepOpt += Dep; + CmdArgs.push_back(Args.MakeArgString(ExtraDepOpt)); + } if (MsanTrackOrigins) CmdArgs.push_back(Args.MakeArgString("-fsanitize-memory-track-origins=" + diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 414e5893992..435811c105f 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -709,7 +709,7 @@ static void ParseDependencyOutputArgs(DependencyOutputOptions &Opts, // Add sanitizer blacklists as extra dependencies. // They won't be discovered by the regular preprocessor, so // we let make / ninja to know about this implicit dependency. - Opts.ExtraDeps = Args.getAllArgValues(OPT_fsanitize_blacklist); + Opts.ExtraDeps = Args.getAllArgValues(OPT_fdepfile_entry); auto ModuleFiles = Args.getAllArgValues(OPT_fmodule_file); Opts.ExtraDeps.insert(Opts.ExtraDeps.end(), ModuleFiles.begin(), ModuleFiles.end()); |

