summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/Tools.cpp
diff options
context:
space:
mode:
authorAlexey Samsonov <samsonov@google.com>2012-11-29 22:36:21 +0000
committerAlexey Samsonov <samsonov@google.com>2012-11-29 22:36:21 +0000
commit0e96becfb16ac05902917c9e71f43b023ac28ca5 (patch)
tree1bc9555e9d9452bdafc811571c58af1aeecdeac6 /clang/lib/Driver/Tools.cpp
parent50a24bd358b5a2f23ac9241cc8af3799e3d66523 (diff)
downloadbcm5719-llvm-0e96becfb16ac05902917c9e71f43b023ac28ca5.tar.gz
bcm5719-llvm-0e96becfb16ac05902917c9e71f43b023ac28ca5.zip
This patch exposes to Clang users three more sanitizers are experimental features of ASan:
1) init-order sanitizer: initialization-order checker. Status: usable, but may produce false positives w/o proper blacklisting. 2) use-after-return sanitizer Status: implemented, but heavily understed. Should be optional, as it significanlty slows program down. 3) use-after-scope sanitizer Status: in progress. llvm-svn: 168950
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r--clang/lib/Driver/Tools.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index f9cb5eff533..f2c1a03caf3 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -1474,6 +1474,13 @@ SanitizerArgs::SanitizerArgs(const Driver &D, const ArgList &Args) {
D.Diag(diag::err_drv_argument_not_allowed_with)
<< lastArgumentForKind(D, Args, NeedsAsan ? NeedsAsanRt : NeedsTsanRt)
<< lastArgumentForKind(D, Args, NeedsUbsan ? NeedsUbsanRt : NeedsTsanRt);
+
+ // If -fsanitize contains extra features of ASan, it should also
+ // explicitly contain -fsanitize=address.
+ if (NeedsAsan && ((Kind & Address) == 0))
+ D.Diag(diag::err_drv_argument_only_allowed_with)
+ << lastArgumentForKind(D, Args, NeedsAsanRt)
+ << "-fsanitize=address";
}
/// If AddressSanitizer is enabled, add appropriate linker flags (Linux).
OpenPOWER on IntegriCloud