[clang] [Clang][Driver] Ignore -fsanitize-kcfi-arity when KCFI is disabled (PR #211749)
Jinseok Kim via cfe-commits
cfe-commits at lists.llvm.org
Fri Jul 24 01:31:53 PDT 2026
https://github.com/JawsKim created https://github.com/llvm/llvm-project/pull/211749
`-fsanitize-kcfi-arity` was still processed after KCFI had been disabled with `-fno-sanitize=kcfi`.
This change only processes `-fsanitize-kcfi-arity` when KCFI remains enabled in the final sanitizer set, avoiding both the unsupported target diagnostic and forwarding the option to cc1.
Adds a regression test for this case.
>From a3047231ec709d7bf4f7ae69e77d32c51b2a73b0 Mon Sep 17 00:00:00 2001
From: Jinseok Kim <wlstjr112 at naver.com>
Date: Fri, 24 Jul 2026 16:45:44 +0900
Subject: [PATCH] [Clang][Driver] Ignore -fsanitize-kcfi-arity when KCFI is
disabled
Signed-off-by: Jinseok Kim <wlstjr112 at naver.com>
---
clang/lib/Driver/SanitizerArgs.cpp | 2 +-
clang/test/Driver/fsanitize-cfi.c | 4 ++++
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/clang/lib/Driver/SanitizerArgs.cpp b/clang/lib/Driver/SanitizerArgs.cpp
index c77ba78122a81..7bbb3c985b185 100644
--- a/clang/lib/Driver/SanitizerArgs.cpp
+++ b/clang/lib/Driver/SanitizerArgs.cpp
@@ -1565,7 +1565,7 @@ void SanitizerArgs::addArgs(const ToolChain &TC, const llvm::opt::ArgList &Args,
if (CfiICallNormalizeIntegers)
CmdArgs.push_back("-fsanitize-cfi-icall-experimental-normalize-integers");
- if (KcfiArity) {
+ if (KcfiArity && Sanitizers.has(SanitizerKind::KCFI)) {
if (!TC.getTriple().isOSLinux() || !TC.getTriple().isArch64Bit()) {
TC.getDriver().Diag(clang::diag::err_drv_kcfi_arity_unsupported_target)
<< TC.getTriple().str();
diff --git a/clang/test/Driver/fsanitize-cfi.c b/clang/test/Driver/fsanitize-cfi.c
index c58ad3b8c2f1c..a9d7809bb524a 100644
--- a/clang/test/Driver/fsanitize-cfi.c
+++ b/clang/test/Driver/fsanitize-cfi.c
@@ -96,3 +96,7 @@
// RUN: not %clang --target=x86_64-linux-gnu -fsanitize=kcfi,function %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-KCFI-FUNCTION
// CHECK-KCFI-FUNCTION: error: invalid argument '-fsanitize=kcfi' not allowed with '-fsanitize=function'
+
+// RUN: %clang --target=i386-linux-gnu -c %s -### -fsanitize=address,kcfi -fno-sanitize=kcfi -fsanitize-kcfi-arity 2>&1 | FileCheck %s --check-prefix=CHECK-KCFI-ARITY-DISABLED --implicit-check-not=error: --implicit-check-not=-fsanitize-kcfi-arity
+
+// CHECK-KCFI-ARITY-DISABLED: "-cc1"{{.*}}"-fsanitize=address"
More information about the cfe-commits
mailing list