https://github.com/vitalybuka updated https://github.com/llvm/llvm-project/pull/135890
>From 701e1fc31766d4608814191673ce50ffec6da1f0 Mon Sep 17 00:00:00 2001 From: Vitaly Buka <vitalyb...@google.com> Date: Tue, 15 Apr 2025 17:34:49 -0700 Subject: [PATCH] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20change?= =?UTF-8?q?s=20to=20main=20this=20commit=20is=20based=20on?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Created using spr 1.3.4 [skip ci] --- clang/include/clang/Driver/SanitizerArgs.h | 4 ++-- clang/lib/Driver/SanitizerArgs.cpp | 13 +++++++------ clang/lib/Driver/ToolChains/CommonArgs.cpp | 6 +++--- 3 files changed, 12 insertions(+), 11 deletions(-) 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 3c7cd562a14e3..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,12 +370,13 @@ bool SanitizerArgs::needsUbsanCXXRt() const { ~TrapSanitizers.Mask); } -bool SanitizerArgs::needsCfiRt() const { - return !(Sanitizers.Mask & SanitizerKind::CFI & ~TrapSanitizers.Mask) && - 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()) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits