@@ -547,29 +547,35 @@ SanitizerArgs::SanitizerArgs(const ToolChain &TC,
547
547
548
548
// Setup blacklist files.
549
549
// Add default blacklist from resource directory.
550
- addDefaultBlacklists (D, Kinds, BlacklistFiles );
550
+ addDefaultBlacklists (D, Kinds, SystemBlacklistFiles );
551
551
// Parse -f(no-)sanitize-blacklist options.
552
552
for (const auto *Arg : Args) {
553
553
if (Arg->getOption ().matches (options::OPT_fsanitize_blacklist)) {
554
554
Arg->claim ();
555
555
std::string BLPath = Arg->getValue ();
556
556
if (llvm::sys::fs::exists (BLPath)) {
557
- BlacklistFiles.push_back (BLPath);
558
- ExtraDeps.push_back (BLPath);
557
+ UserBlacklistFiles.push_back (BLPath);
559
558
} else {
560
559
D.Diag (clang::diag::err_drv_no_such_file) << BLPath;
561
560
}
562
561
} else if (Arg->getOption ().matches (options::OPT_fno_sanitize_blacklist)) {
563
562
Arg->claim ();
564
- BlacklistFiles .clear ();
565
- ExtraDeps .clear ();
563
+ UserBlacklistFiles .clear ();
564
+ SystemBlacklistFiles .clear ();
566
565
}
567
566
}
568
567
// Validate blacklists format.
569
568
{
570
569
std::string BLError;
571
570
std::unique_ptr<llvm::SpecialCaseList> SCL (
572
- llvm::SpecialCaseList::create (BlacklistFiles, BLError));
571
+ llvm::SpecialCaseList::create (UserBlacklistFiles, BLError));
572
+ if (!SCL.get ())
573
+ D.Diag (clang::diag::err_drv_malformed_sanitizer_blacklist) << BLError;
574
+ }
575
+ {
576
+ std::string BLError;
577
+ std::unique_ptr<llvm::SpecialCaseList> SCL (
578
+ llvm::SpecialCaseList::create (SystemBlacklistFiles, BLError));
573
579
if (!SCL.get ())
574
580
D.Diag (clang::diag::err_drv_malformed_sanitizer_blacklist) << BLError;
575
581
}
@@ -920,15 +926,15 @@ void SanitizerArgs::addArgs(const ToolChain &TC, const llvm::opt::ArgList &Args,
920
926
CmdArgs.push_back (
921
927
Args.MakeArgString (" -fsanitize-trap=" + toString (TrapSanitizers)));
922
928
923
- for (const auto &BLPath : BlacklistFiles ) {
929
+ for (const auto &BLPath : UserBlacklistFiles ) {
924
930
SmallString<64 > BlacklistOpt (" -fsanitize-blacklist=" );
925
931
BlacklistOpt += BLPath;
926
932
CmdArgs.push_back (Args.MakeArgString (BlacklistOpt));
927
933
}
928
- for (const auto &Dep : ExtraDeps ) {
929
- SmallString<64 > ExtraDepOpt (" -fdepfile-entry =" );
930
- ExtraDepOpt += Dep ;
931
- CmdArgs.push_back (Args.MakeArgString (ExtraDepOpt ));
934
+ for (const auto &BLPath : SystemBlacklistFiles ) {
935
+ SmallString<64 > BlacklistOpt (" -fsanitize-system-blacklist =" );
936
+ BlacklistOpt += BLPath ;
937
+ CmdArgs.push_back (Args.MakeArgString (BlacklistOpt ));
932
938
}
933
939
934
940
if (MsanTrackOrigins)
0 commit comments