Skip to content

Commit de23101

Browse files
committed
[𝘀𝗽𝗿] initial version
Created using spr 1.3.4
2 parents 2d98bdc + 8fd2c9a commit de23101

File tree

3 files changed

+12
-11
lines changed

3 files changed

+12
-11
lines changed

clang/include/clang/Driver/SanitizerArgs.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,8 @@ class SanitizerArgs {
105105
bool requiresMinimalRuntime() const { return MinimalRuntime; }
106106
bool needsDfsanRt() const { return Sanitizers.has(SanitizerKind::DataFlow); }
107107
bool needsSafeStackRt() const { return SafeStackRuntime; }
108-
bool needsCfiRt() const;
109-
bool needsCfiDiagRt() const;
108+
bool needsCfiCrossDsoRt() const;
109+
bool needsCfiCrossDsoDiagRt() const;
110110
bool needsStatsRt() const { return Stats; }
111111
bool needsScudoRt() const { return Sanitizers.has(SanitizerKind::Scudo); }
112112
bool needsNsanRt() const {

clang/lib/Driver/SanitizerArgs.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -354,8 +354,8 @@ bool SanitizerArgs::needsFuzzerInterceptors() const {
354354
bool SanitizerArgs::needsUbsanRt() const {
355355
// All of these include ubsan.
356356
if (needsAsanRt() || needsMsanRt() || needsNsanRt() || needsHwasanRt() ||
357-
needsTsanRt() || needsDfsanRt() || needsLsanRt() || needsCfiDiagRt() ||
358-
(needsScudoRt() && !requiresMinimalRuntime()))
357+
needsTsanRt() || needsDfsanRt() || needsLsanRt() ||
358+
needsCfiCrossDsoDiagRt() || (needsScudoRt() && !requiresMinimalRuntime()))
359359
return false;
360360

361361
return (Sanitizers.Mask & NeedsUbsanRt & ~TrapSanitizers.Mask) ||
@@ -370,12 +370,13 @@ bool SanitizerArgs::needsUbsanCXXRt() const {
370370
~TrapSanitizers.Mask);
371371
}
372372

373-
bool SanitizerArgs::needsCfiRt() const {
374-
return !(Sanitizers.Mask & SanitizerKind::CFI & ~TrapSanitizers.Mask) &&
375-
CfiCrossDso && !ImplicitCfiRuntime;
373+
bool SanitizerArgs::needsCfiCrossDsoRt() const {
374+
// Diag runtime includes cross dso runtime.
375+
return !needsCfiCrossDsoDiagRt() && CfiCrossDso && !ImplicitCfiRuntime;
376376
}
377377

378-
bool SanitizerArgs::needsCfiDiagRt() const {
378+
bool SanitizerArgs::needsCfiCrossDsoDiagRt() const {
379+
// UBSsan handles CFI diagnostics without cross-DSO suppport.
379380
return (Sanitizers.Mask & SanitizerKind::CFI & ~TrapSanitizers.Mask) &&
380381
CfiCrossDso && !ImplicitCfiRuntime;
381382
}

clang/lib/Driver/ToolChains/CommonArgs.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1550,14 +1550,14 @@ collectSanitizerRuntimes(const ToolChain &TC, const ArgList &Args,
15501550
RequiredSymbols.push_back("__safestack_init");
15511551
}
15521552
if (!(SanArgs.needsSharedRt() && SanArgs.needsUbsanRt())) {
1553-
if (SanArgs.needsCfiRt())
1553+
if (SanArgs.needsCfiCrossDsoRt())
15541554
StaticRuntimes.push_back("cfi");
1555-
if (SanArgs.needsCfiDiagRt())
1555+
if (SanArgs.needsCfiCrossDsoDiagRt())
15561556
StaticRuntimes.push_back("cfi_diag");
15571557
}
15581558
if (SanArgs.linkCXXRuntimes() && !SanArgs.requiresMinimalRuntime() &&
15591559
((!SanArgs.needsSharedRt() && SanArgs.needsUbsanCXXRt()) ||
1560-
SanArgs.needsCfiDiagRt())) {
1560+
SanArgs.needsCfiCrossDsoDiagRt())) {
15611561
StaticRuntimes.push_back("ubsan_standalone_cxx");
15621562
}
15631563
if (SanArgs.needsStatsRt()) {

0 commit comments

Comments
 (0)