summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/SanitizerArgs.h
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Driver/SanitizerArgs.h')
-rw-r--r--clang/lib/Driver/SanitizerArgs.h20
1 files changed, 13 insertions, 7 deletions
diff --git a/clang/lib/Driver/SanitizerArgs.h b/clang/lib/Driver/SanitizerArgs.h
index 05886768cf5..8776022eddb 100644
--- a/clang/lib/Driver/SanitizerArgs.h
+++ b/clang/lib/Driver/SanitizerArgs.h
@@ -44,17 +44,22 @@ class SanitizerArgs {
HasZeroBaseShadow = Thread | Memory | DataFlow
};
unsigned Kind;
+
std::string BlacklistFile;
bool MsanTrackOrigins;
- bool AsanZeroBaseShadow;
+ enum AsanZeroBaseShadowKind {
+ AZBSK_Default, // Default value is toolchain-specific.
+ AZBSK_On,
+ AZBSK_Off
+ } AsanZeroBaseShadow;
bool UbsanTrapOnError;
public:
SanitizerArgs();
/// Parses the sanitizer arguments from an argument list.
- SanitizerArgs(const ToolChain &TC, const llvm::opt::ArgList &Args);
+ SanitizerArgs(const Driver &D, const llvm::opt::ArgList &Args);
- void parse(const ToolChain &TC, const llvm::opt::ArgList &Args);
+ void parse(const Driver &D, const llvm::opt::ArgList &Args);
bool needsAsanRt() const { return Kind & NeedsAsanRt; }
bool needsTsanRt() const { return Kind & NeedsTsanRt; }
@@ -70,16 +75,17 @@ class SanitizerArgs {
bool sanitizesVptr() const { return Kind & Vptr; }
bool notAllowedWithTrap() const { return Kind & NotAllowedWithTrap; }
- bool hasZeroBaseShadow() const {
- return (Kind & HasZeroBaseShadow) || AsanZeroBaseShadow;
+ bool hasZeroBaseShadow(const ToolChain &TC) const {
+ return (Kind & HasZeroBaseShadow) || hasAsanZeroBaseShadow(TC);
}
-
- void addArgs(const llvm::opt::ArgList &Args,
+ void addArgs(const ToolChain &TC, const llvm::opt::ArgList &Args,
llvm::opt::ArgStringList &CmdArgs) const;
private:
void clear();
+ bool hasAsanZeroBaseShadow(const ToolChain &TC) const;
+
/// Parse a single value from a -fsanitize= or -fno-sanitize= value list.
/// Returns OR of members of the \c SanitizeKind enumeration, or \c 0
/// if \p Value is not known.
OpenPOWER on IntegriCloud