[clang] Frontend: Define __SANITIZE_*__ macros for certain sanitizers. (PR #153888)
Peter Collingbourne via cfe-commits
cfe-commits at lists.llvm.org
Fri Aug 15 16:12:50 PDT 2025
https://github.com/pcc updated https://github.com/llvm/llvm-project/pull/153888
>From f7e8badf327c2328c548ccdf186fd09f735d4b5c Mon Sep 17 00:00:00 2001
From: Peter Collingbourne <peter at pcc.me.uk>
Date: Fri, 15 Aug 2025 15:18:48 -0700
Subject: [PATCH 1/2] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20in?=
=?UTF-8?q?itial=20version?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Created using spr 1.3.6-beta.1
---
clang/lib/Frontend/InitPreprocessor.cpp | 7 +++++++
clang/test/Preprocessor/sanitizer-predefines.c | 8 ++++++++
2 files changed, 15 insertions(+)
create mode 100644 clang/test/Preprocessor/sanitizer-predefines.c
diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp
index 008a35d5265e1..81d798d8e27c6 100644
--- a/clang/lib/Frontend/InitPreprocessor.cpp
+++ b/clang/lib/Frontend/InitPreprocessor.cpp
@@ -1519,6 +1519,13 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
if (TI.getTriple().isOSBinFormatELF())
Builder.defineMacro("__ELF__");
+ if (LangOpts.Sanitize.has(SanitizerKind::Address))
+ Builder.defineMacro("__SANITIZE_ADDRESS__");
+ if (LangOpts.Sanitize.has(SanitizerKind::HWAddress))
+ Builder.defineMacro("__SANITIZE_HWADDRESS__");
+ if (LangOpts.Sanitize.has(SanitizerKind::Thread))
+ Builder.defineMacro("__SANITIZE_THREAD__");
+
// Target OS macro definitions.
if (PPOpts.DefineTargetOSMacros) {
const llvm::Triple &Triple = TI.getTriple();
diff --git a/clang/test/Preprocessor/sanitizer-predefines.c b/clang/test/Preprocessor/sanitizer-predefines.c
new file mode 100644
index 0000000000000..9d2f6bf2517a2
--- /dev/null
+++ b/clang/test/Preprocessor/sanitizer-predefines.c
@@ -0,0 +1,8 @@
+// RUN: %clang_cc1 -E -dM -triple aarch64-unknown-linux -fsanitize=address %s | FileCheck %s --check-prefix=ASAN
+// ASAN: #define __SANITIZE_ADDRESS__ 1
+
+// RUN: %clang_cc1 -E -dM -triple aarch64-unknown-linux -fsanitize=hwaddress %s | FileCheck %s --check-prefix=HWASAN
+// HWASAN: #define __SANITIZE_HWADDRESS__ 1
+
+// RUN: %clang_cc1 -E -dM -triple aarch64-unknown-linux -fsanitize=thread %s | FileCheck %s --check-prefix=TSAN
+// TSAN: #define __SANITIZE_THREAD__ 1
>From 4bb9b56d295eef7d63c15cdbd4177fbe47ad34ab Mon Sep 17 00:00:00 2001
From: Peter Collingbourne <peter at pcc.me.uk>
Date: Fri, 15 Aug 2025 16:12:36 -0700
Subject: [PATCH 2/2] Fix formatting, add rationale to commit message
Created using spr 1.3.6-beta.1
---
clang/lib/Frontend/InitPreprocessor.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp
index 81d798d8e27c6..5980806fba5e4 100644
--- a/clang/lib/Frontend/InitPreprocessor.cpp
+++ b/clang/lib/Frontend/InitPreprocessor.cpp
@@ -1525,7 +1525,7 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
Builder.defineMacro("__SANITIZE_HWADDRESS__");
if (LangOpts.Sanitize.has(SanitizerKind::Thread))
Builder.defineMacro("__SANITIZE_THREAD__");
-
+
// Target OS macro definitions.
if (PPOpts.DefineTargetOSMacros) {
const llvm::Triple &Triple = TI.getTriple();
More information about the cfe-commits
mailing list