[llvm-branch-commits] [NFC][Driver][CFI] Rename to clarify purpose of CFI runtime (PR #135885)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Apr 15 16:59:28 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang-driver
@llvm/pr-subscribers-clang
Author: Vitaly Buka (vitalybuka)
<details>
<summary>Changes</summary>
CFI runtime (diagnostics, or not) is only needed
for cross-dso support.
---
Full diff: https://github.com/llvm/llvm-project/pull/135885.diff
3 Files Affected:
- (modified) clang/include/clang/Driver/SanitizerArgs.h (+2-2)
- (modified) clang/lib/Driver/SanitizerArgs.cpp (+7-5)
- (modified) clang/lib/Driver/ToolChains/CommonArgs.cpp (+3-3)
``````````diff
diff --git a/clang/include/clang/Driver/SanitizerArgs.h b/clang/include/clang/Driver/SanitizerArgs.h
index 6a866ded0e75c..528e3b400f3dc 100644
--- a/clang/include/clang/Driver/SanitizerArgs.h
+++ b/clang/include/clang/Driver/SanitizerArgs.h
@@ -105,8 +105,8 @@ class SanitizerArgs {
bool requiresMinimalRuntime() const { return MinimalRuntime; }
bool needsDfsanRt() const { return Sanitizers.has(SanitizerKind::DataFlow); }
bool needsSafeStackRt() const { return SafeStackRuntime; }
- bool needsCfiRt() const;
- bool needsCfiDiagRt() const;
+ bool needsCfiCrossDsoRt() const;
+ bool needsCfiCrossDsoDiagRt() const;
bool needsStatsRt() const { return Stats; }
bool needsScudoRt() const { return Sanitizers.has(SanitizerKind::Scudo); }
bool needsNsanRt() const {
diff --git a/clang/lib/Driver/SanitizerArgs.cpp b/clang/lib/Driver/SanitizerArgs.cpp
index 1db9da1b60939..ee151d5c68b85 100644
--- a/clang/lib/Driver/SanitizerArgs.cpp
+++ b/clang/lib/Driver/SanitizerArgs.cpp
@@ -354,8 +354,8 @@ bool SanitizerArgs::needsFuzzerInterceptors() const {
bool SanitizerArgs::needsUbsanRt() const {
// All of these include ubsan.
if (needsAsanRt() || needsMsanRt() || needsNsanRt() || needsHwasanRt() ||
- needsTsanRt() || needsDfsanRt() || needsLsanRt() || needsCfiDiagRt() ||
- (needsScudoRt() && !requiresMinimalRuntime()))
+ needsTsanRt() || needsDfsanRt() || needsLsanRt() ||
+ needsCfiCrossDsoDiagRt() || (needsScudoRt() && !requiresMinimalRuntime()))
return false;
return (Sanitizers.Mask & NeedsUbsanRt & ~TrapSanitizers.Mask) ||
@@ -370,11 +370,13 @@ bool SanitizerArgs::needsUbsanCXXRt() const {
~TrapSanitizers.Mask);
}
-bool SanitizerArgs::needsCfiRt() const {
- return !needsCfiDiagRt() && CfiCrossDso && !ImplicitCfiRuntime;
+bool SanitizerArgs::needsCfiCrossDsoRt() const {
+ // Diag runtime includes cross dso runtime.
+ return !needsCfiCrossDsoDiagRt() && CfiCrossDso && !ImplicitCfiRuntime;
}
-bool SanitizerArgs::needsCfiDiagRt() const {
+bool SanitizerArgs::needsCfiCrossDsoDiagRt() const {
+ // UBSsan handles CFI diagnostics without cross-DSO suppport.
return (Sanitizers.Mask & SanitizerKind::CFI & ~TrapSanitizers.Mask) &&
CfiCrossDso && !ImplicitCfiRuntime;
}
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index ddeadff8f6dfb..7aab849abe0c1 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -1550,14 +1550,14 @@ collectSanitizerRuntimes(const ToolChain &TC, const ArgList &Args,
RequiredSymbols.push_back("__safestack_init");
}
if (!(SanArgs.needsSharedRt() && SanArgs.needsUbsanRt())) {
- if (SanArgs.needsCfiRt())
+ if (SanArgs.needsCfiCrossDsoRt())
StaticRuntimes.push_back("cfi");
- if (SanArgs.needsCfiDiagRt())
+ if (SanArgs.needsCfiCrossDsoDiagRt())
StaticRuntimes.push_back("cfi_diag");
}
if (SanArgs.linkCXXRuntimes() && !SanArgs.requiresMinimalRuntime() &&
((!SanArgs.needsSharedRt() && SanArgs.needsUbsanCXXRt()) ||
- SanArgs.needsCfiDiagRt())) {
+ SanArgs.needsCfiCrossDsoDiagRt())) {
StaticRuntimes.push_back("ubsan_standalone_cxx");
}
if (SanArgs.needsStatsRt()) {
``````````
</details>
https://github.com/llvm/llvm-project/pull/135885
More information about the llvm-branch-commits
mailing list