diff options
| author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2015-12-16 00:38:42 +0000 |
|---|---|---|
| committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2015-12-16 00:38:42 +0000 |
| commit | e3fb51cf5ac539e4958245f2cd4df4aeaecf7c0e (patch) | |
| tree | 513049f6c792d0550f9f5039b4154dbae5258a9f /clang/lib | |
| parent | 72b0111ce6aa57e2385c87fb21dc5b59ee296862 (diff) | |
| download | bcm5719-llvm-e3fb51cf5ac539e4958245f2cd4df4aeaecf7c0e.tar.gz bcm5719-llvm-e3fb51cf5ac539e4958245f2cd4df4aeaecf7c0e.zip | |
[cfi] Exclude ubsan runtime library from non-diag CFI builds (driver changes).
Split the CFI runtime in two: cfi and cfi_diag. The latter includes
UBSan runtime to allow printing diagnostics.
llvm-svn: 255736
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/Driver/SanitizerArgs.cpp | 6 | ||||
| -rw-r--r-- | clang/lib/Driver/Tools.cpp | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/clang/lib/Driver/SanitizerArgs.cpp b/clang/lib/Driver/SanitizerArgs.cpp index 82ac2b0258c..2fded1c80da 100644 --- a/clang/lib/Driver/SanitizerArgs.cpp +++ b/clang/lib/Driver/SanitizerArgs.cpp @@ -165,7 +165,11 @@ bool SanitizerArgs::needsUbsanRt() const { } bool SanitizerArgs::needsCfiRt() const { - return CfiCrossDso; + return !(Sanitizers.Mask & CFI & ~TrapSanitizers.Mask) && CfiCrossDso; +} + +bool SanitizerArgs::needsCfiDiagRt() const { + return (Sanitizers.Mask & CFI & ~TrapSanitizers.Mask) && CfiCrossDso; } bool SanitizerArgs::requiresPIE() const { diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 01cef9070aa..20a1035bd58 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -2794,6 +2794,8 @@ collectSanitizerRuntimes(const ToolChain &TC, const ArgList &Args, StaticRuntimes.push_back("safestack"); if (SanArgs.needsCfiRt()) StaticRuntimes.push_back("cfi"); + if (SanArgs.needsCfiDiagRt()) + StaticRuntimes.push_back("cfi_diag"); } // Should be called before we add system libraries (C++ ABI, libstdc++/libc++, |

