summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/SanitizerArgs.h
diff options
context:
space:
mode:
authorPeter Collingbourne <peter@pcc.me.uk>2013-04-09 04:35:11 +0000
committerPeter Collingbourne <peter@pcc.me.uk>2013-04-09 04:35:11 +0000
commit54d770cb1fedf23466eb75e7f34fa561e8d63d23 (patch)
treea1e95e1c4200129e7d038a54da1ab6e80da42f41 /clang/lib/Driver/SanitizerArgs.h
parent61e221f68de5b7b32cea552e3b4ef7838eb2182c (diff)
downloadbcm5719-llvm-54d770cb1fedf23466eb75e7f34fa561e8d63d23.tar.gz
bcm5719-llvm-54d770cb1fedf23466eb75e7f34fa561e8d63d23.zip
If the user requested a zero-base-shadow sanitizer, infer -pie and -fPIC when appropriate.
Differential Revision: http://llvm-reviews.chandlerc.com/D502 llvm-svn: 179082
Diffstat (limited to 'clang/lib/Driver/SanitizerArgs.h')
-rw-r--r--clang/lib/Driver/SanitizerArgs.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/clang/lib/Driver/SanitizerArgs.h b/clang/lib/Driver/SanitizerArgs.h
index e61f15ad624..326d80db72e 100644
--- a/clang/lib/Driver/SanitizerArgs.h
+++ b/clang/lib/Driver/SanitizerArgs.h
@@ -38,7 +38,8 @@ class SanitizerArgs {
NeedsTsanRt = Thread,
NeedsMsanRt = Memory,
NeedsUbsanRt = Undefined | Integer,
- NotAllowedWithTrap = Vptr
+ NotAllowedWithTrap = Vptr,
+ HasZeroBaseShadow = Thread | Memory
};
unsigned Kind;
std::string BlacklistFile;
@@ -50,7 +51,7 @@ class SanitizerArgs {
SanitizerArgs() : Kind(0), BlacklistFile(""), MsanTrackOrigins(false),
AsanZeroBaseShadow(false), UbsanTrapOnError(false) {}
/// Parses the sanitizer arguments from an argument list.
- SanitizerArgs(const Driver &D, const ArgList &Args);
+ SanitizerArgs(const ToolChain &TC, const ArgList &Args);
bool needsAsanRt() const { return Kind & NeedsAsanRt; }
bool needsTsanRt() const { return Kind & NeedsTsanRt; }
@@ -63,6 +64,9 @@ class SanitizerArgs {
bool sanitizesVptr() const { return Kind & Vptr; }
bool notAllowedWithTrap() const { return Kind & NotAllowedWithTrap; }
+ bool hasZeroBaseShadow() const {
+ return (Kind & HasZeroBaseShadow) || AsanZeroBaseShadow;
+ }
void addArgs(const ArgList &Args, ArgStringList &CmdArgs) const {
if (!Kind)
OpenPOWER on IntegriCloud