forked from OSchip/llvm-project
[Sanitizer] If -fsanitize-blacklist= option is not explicitly specified, make Clang look for the default sanitizer-specific blacklist in the resource directory.
llvm-svn: 175505
This commit is contained in:
parent
adaca58526
commit
d26b3334b1
|
@ -15,6 +15,7 @@
|
|||
#include "clang/Driver/DriverDiagnostic.h"
|
||||
#include "clang/Driver/Options.h"
|
||||
#include "llvm/ADT/StringSwitch.h"
|
||||
#include "llvm/Support/Path.h"
|
||||
|
||||
namespace clang {
|
||||
namespace driver {
|
||||
|
@ -189,6 +190,18 @@ class SanitizerArgs {
|
|||
|
||||
llvm_unreachable("arg didn't provide expected value");
|
||||
}
|
||||
|
||||
static bool getDefaultBlacklistForKind(const Driver &D, unsigned Kind,
|
||||
std::string &BLPath) {
|
||||
// For now, specify the default blacklist location for ASan only.
|
||||
if (Kind & NeedsAsanRt) {
|
||||
SmallString<64> Path(D.ResourceDir);
|
||||
llvm::sys::path::append(Path, "asan_blacklist.txt");
|
||||
BLPath = Path.str();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace driver
|
||||
|
|
|
@ -1543,6 +1543,14 @@ SanitizerArgs::SanitizerArgs(const Driver &D, const ArgList &Args)
|
|||
else
|
||||
D.Diag(diag::err_drv_no_such_file) << BLPath;
|
||||
}
|
||||
} else {
|
||||
// If no -fsanitize-blacklist option is specified, try to look up for
|
||||
// blacklist in the resource directory.
|
||||
std::string BLPath;
|
||||
bool BLExists = false;
|
||||
if (getDefaultBlacklistForKind(D, Kind, BLPath) &&
|
||||
!llvm::sys::fs::exists(BLPath, BLExists) && BLExists)
|
||||
BlacklistFile = BLPath;
|
||||
}
|
||||
|
||||
// Parse -f(no-)sanitize-memory-track-origins options.
|
||||
|
|
Loading…
Reference in New Issue