diff options
author | Jeremy Morse <jeremy.morse@sony.com> | 2019-11-08 11:33:40 +0000 |
---|---|---|
committer | Jeremy Morse <jeremy.morse@sony.com> | 2019-11-08 12:07:42 +0000 |
commit | 6b45e1bc11e91ea7b57a6ab1c19461a86dba33f8 (patch) | |
tree | f40ae71d36c84637d11178302c6df17f6141223f /clang/lib | |
parent | d6be9273c6035c07b25dd1494f76cd61d523b878 (diff) | |
download | bcm5719-llvm-6b45e1bc11e91ea7b57a6ab1c19461a86dba33f8.tar.gz bcm5719-llvm-6b45e1bc11e91ea7b57a6ab1c19461a86dba33f8.zip |
Revert "[clang] Report sanitizer blacklist as a dependency in cc1"
This reverts commit 03b84e4f6d0e1c04f22d69cc445f36e1f713beb4.
This breaks dfsan tests with a linking failure, in for example this build:
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux/builds/24312
Reverting this patch locally makes those tests succeed.
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Driver/SanitizerArgs.cpp | 28 | ||||
-rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 21 |
2 files changed, 12 insertions, 37 deletions
diff --git a/clang/lib/Driver/SanitizerArgs.cpp b/clang/lib/Driver/SanitizerArgs.cpp index 8937197c253..cc6c5e6ef43 100644 --- a/clang/lib/Driver/SanitizerArgs.cpp +++ b/clang/lib/Driver/SanitizerArgs.cpp @@ -557,35 +557,29 @@ SanitizerArgs::SanitizerArgs(const ToolChain &TC, // Setup blacklist files. // Add default blacklist from resource directory. - addDefaultBlacklists(D, Kinds, SystemBlacklistFiles); + addDefaultBlacklists(D, Kinds, BlacklistFiles); // Parse -f(no-)sanitize-blacklist options. for (const auto *Arg : Args) { if (Arg->getOption().matches(options::OPT_fsanitize_blacklist)) { Arg->claim(); std::string BLPath = Arg->getValue(); if (llvm::sys::fs::exists(BLPath)) { - UserBlacklistFiles.push_back(BLPath); + BlacklistFiles.push_back(BLPath); + 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(); - UserBlacklistFiles.clear(); - SystemBlacklistFiles.clear(); + BlacklistFiles.clear(); + ExtraDeps.clear(); } } // Validate blacklists format. { std::string BLError; std::unique_ptr<llvm::SpecialCaseList> SCL( - llvm::SpecialCaseList::create(UserBlacklistFiles, BLError)); - if (!SCL.get()) - D.Diag(clang::diag::err_drv_malformed_sanitizer_blacklist) << BLError; - } - { - std::string BLError; - std::unique_ptr<llvm::SpecialCaseList> SCL( - llvm::SpecialCaseList::create(SystemBlacklistFiles, BLError)); + llvm::SpecialCaseList::create(BlacklistFiles, BLError)); if (!SCL.get()) D.Diag(clang::diag::err_drv_malformed_sanitizer_blacklist) << BLError; } @@ -958,15 +952,15 @@ void SanitizerArgs::addArgs(const ToolChain &TC, const llvm::opt::ArgList &Args, CmdArgs.push_back( Args.MakeArgString("-fsanitize-trap=" + toString(TrapSanitizers))); - for (const auto &BLPath : UserBlacklistFiles) { + for (const auto &BLPath : BlacklistFiles) { SmallString<64> BlacklistOpt("-fsanitize-blacklist="); BlacklistOpt += BLPath; CmdArgs.push_back(Args.MakeArgString(BlacklistOpt)); } - for (const auto &BLPath : SystemBlacklistFiles) { - SmallString<64> BlacklistOpt("-fsanitize-system-blacklist="); - 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) diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 17fd4ce7752..195a29d7118 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -1447,26 +1447,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. - if (!Args.hasArg(OPT_fno_sanitize_blacklist)) { - for (const auto *A : Args.filtered(OPT_fsanitize_blacklist)) { - StringRef Val = A->getValue(); - if (Val.find('=') == StringRef::npos) - Opts.ExtraDeps.push_back(Val); - } - if (Opts.IncludeSystemHeaders) { - for (const auto *A : Args.filtered(OPT_fsanitize_system_blacklist)) { - StringRef Val = A->getValue(); - if (Val.find('=') == StringRef::npos) - Opts.ExtraDeps.push_back(Val); - } - } - } - - // Propagate the extra dependencies. - for (const auto *A : Args.filtered(OPT_fdepfile_entry)) { - Opts.ExtraDeps.push_back(A->getValue()); - } - + Opts.ExtraDeps = Args.getAllArgValues(OPT_fdepfile_entry); // Only the -fmodule-file=<file> form. for (const auto *A : Args.filtered(OPT_fmodule_file)) { StringRef Val = A->getValue(); |