diff options
author | Alexey Samsonov <samsonov@google.com> | 2012-12-03 19:12:58 +0000 |
---|---|---|
committer | Alexey Samsonov <samsonov@google.com> | 2012-12-03 19:12:58 +0000 |
commit | 9ab73626fc3881ecfad2b71d942ecd31e81e9e35 (patch) | |
tree | 3807ccb7ec789ab68d0b4cbe50490b1737824c41 /clang/lib/Driver/Tools.cpp | |
parent | ef51c3ff819dae6f63c994cc5836d78e6794c427 (diff) | |
download | bcm5719-llvm-9ab73626fc3881ecfad2b71d942ecd31e81e9e35.tar.gz bcm5719-llvm-9ab73626fc3881ecfad2b71d942ecd31e81e9e35.zip |
Add Clang flags -fsanitize-blacklist and -fno-sanitize-blacklist. Make this flag usable for ASan. Blacklisting can be used to disable sanitizer checks for particular file/function/object.
llvm-svn: 169144
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 92c96b25c95..e93fa108d96 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -1486,6 +1486,19 @@ SanitizerArgs::SanitizerArgs(const Driver &D, const ArgList &Args) { D.Diag(diag::err_drv_argument_only_allowed_with) << lastArgumentForKind(D, Args, NeedsAsanRt) << "-fsanitize=address"; + + // Parse -f(no-)sanitize-blacklist options. + if (Arg *BLArg = Args.getLastArg(options::OPT_fsanitize_blacklist, + options::OPT_fno_sanitize_blacklist)) { + if (BLArg->getOption().matches(options::OPT_fsanitize_blacklist)) { + std::string BLPath = BLArg->getValue(); + bool BLExists = false; + if (!llvm::sys::fs::exists(BLPath, BLExists) && BLExists) + BlacklistFile = BLPath; + else + D.Diag(diag::err_drv_no_such_file) << BLPath; + } + } } /// If AddressSanitizer is enabled, add appropriate linker flags (Linux). |