diff options
Diffstat (limited to 'contrib/llvm-project/clang/include/clang/Driver/SanitizerArgs.h')
-rw-r--r-- | contrib/llvm-project/clang/include/clang/Driver/SanitizerArgs.h | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/contrib/llvm-project/clang/include/clang/Driver/SanitizerArgs.h b/contrib/llvm-project/clang/include/clang/Driver/SanitizerArgs.h index e9e329e7cb53..07070ec4fc06 100644 --- a/contrib/llvm-project/clang/include/clang/Driver/SanitizerArgs.h +++ b/contrib/llvm-project/clang/include/clang/Driver/SanitizerArgs.h @@ -30,14 +30,19 @@ class SanitizerArgs { std::vector<std::string> SystemIgnorelistFiles; std::vector<std::string> CoverageAllowlistFiles; std::vector<std::string> CoverageIgnorelistFiles; + std::vector<std::string> BinaryMetadataIgnorelistFiles; int CoverageFeatures = 0; + int BinaryMetadataFeatures = 0; int MsanTrackOrigins = 0; bool MsanUseAfterDtor = true; + bool MsanParamRetval = true; bool CfiCrossDso = false; bool CfiICallGeneralizePointers = false; + bool CfiICallNormalizeIntegers = false; bool CfiCanonicalJumpTables = false; int AsanFieldPadding = 0; bool SharedRuntime = false; + bool StableABI = false; bool AsanUseAfterScope = true; bool AsanPoisonCustomArrayCookie = false; bool AsanGlobalsDeadStripping = false; @@ -63,11 +68,15 @@ class SanitizerArgs { llvm::AsanDetectStackUseAfterReturnMode AsanUseAfterReturn = llvm::AsanDetectStackUseAfterReturnMode::Invalid; + std::string MemtagMode; + public: /// Parses the sanitizer arguments from an argument list. - SanitizerArgs(const ToolChain &TC, const llvm::opt::ArgList &Args); + SanitizerArgs(const ToolChain &TC, const llvm::opt::ArgList &Args, + bool DiagnoseErrors = true); bool needsSharedRt() const { return SharedRuntime; } + bool needsStableAbi() const { return StableABI; } bool needsMemProfRt() const { return NeedsMemProfRt; } bool needsAsanRt() const { return Sanitizers.has(SanitizerKind::Address); } @@ -95,6 +104,27 @@ public: bool needsStatsRt() const { return Stats; } bool needsScudoRt() const { return Sanitizers.has(SanitizerKind::Scudo); } + bool hasMemTag() const { + return hasMemtagHeap() || hasMemtagStack() || hasMemtagGlobals(); + } + bool hasMemtagHeap() const { + return Sanitizers.has(SanitizerKind::MemtagHeap); + } + bool hasMemtagStack() const { + return Sanitizers.has(SanitizerKind::MemtagStack); + } + bool hasMemtagGlobals() const { + return Sanitizers.has(SanitizerKind::MemtagGlobals); + } + const std::string &getMemtagMode() const { + assert(!MemtagMode.empty()); + return MemtagMode; + } + + bool hasShadowCallStack() const { + return Sanitizers.has(SanitizerKind::ShadowCallStack); + } + bool requiresPIE() const; bool needsUnwindTables() const; bool needsLTO() const; |