[llvm] gn build: Add use_hwasan flag. (PR #143052)

Peter Collingbourne via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 5 17:22:14 PDT 2025


https://github.com/pcc created https://github.com/llvm/llvm-project/pull/143052

None

>From d035b6f6256740d41d4882a82324817ae9a7e9cc Mon Sep 17 00:00:00 2001
From: Peter Collingbourne <pcc at google.com>
Date: Thu, 5 Jun 2025 17:21:59 -0700
Subject: [PATCH] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20initia?=
 =?UTF-8?q?l=20version?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Created using spr 1.3.6-beta.1
---
 llvm/utils/gn/build/BUILD.gn           | 9 ++++++++-
 llvm/utils/gn/build/buildflags.gni     | 3 +++
 llvm/utils/gn/build/toolchain/BUILD.gn | 1 +
 3 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/llvm/utils/gn/build/BUILD.gn b/llvm/utils/gn/build/BUILD.gn
index 9b5254e4c9f0b..2d0bed58a3840 100644
--- a/llvm/utils/gn/build/BUILD.gn
+++ b/llvm/utils/gn/build/BUILD.gn
@@ -396,6 +396,13 @@ config("compiler_defaults") {
     ldflags += [ "-fsanitize=address" ]
   }
 
+  if (use_hwasan) {
+    assert(is_clang && current_os == "linux" && current_cpu == "arm64",
+           "hwasan only supported on Linux/arm64/Clang")
+    cflags += [ "-fsanitize=hwaddress" ]
+    ldflags += [ "-fsanitize=hwaddress" ]
+  }
+
   if (use_tsan) {
     assert(is_clang && current_os == "linux",
            "tsan only supported on Linux/Clang")
@@ -448,7 +455,7 @@ config("zdefs") {
   # -Wl,-z,defs doesn't work with sanitizers.
   # https://clang.llvm.org/docs/AddressSanitizer.html
   if (current_os != "ios" && current_os != "mac" && current_os != "win" &&
-      !(use_asan || use_tsan || use_ubsan)) {
+      !(use_asan || use_hwasan || use_tsan || use_ubsan)) {
     ldflags = [ "-Wl,-z,defs" ]
   }
 }
diff --git a/llvm/utils/gn/build/buildflags.gni b/llvm/utils/gn/build/buildflags.gni
index ca43a2499edcb..11fd4551461e5 100644
--- a/llvm/utils/gn/build/buildflags.gni
+++ b/llvm/utils/gn/build/buildflags.gni
@@ -11,6 +11,9 @@ declare_args() {
   # Whether to build with asan.
   use_asan = false
 
+  # Whether to build with hwasan.
+  use_hwasan = false
+
   # Whether to enable assertions.
   llvm_enable_assertions = true
 
diff --git a/llvm/utils/gn/build/toolchain/BUILD.gn b/llvm/utils/gn/build/toolchain/BUILD.gn
index 00d9df12f5a97..271aebf1edb5d 100644
--- a/llvm/utils/gn/build/toolchain/BUILD.gn
+++ b/llvm/utils/gn/build/toolchain/BUILD.gn
@@ -260,6 +260,7 @@ stage2_unix_toolchain("stage2_baremetal_aarch64") {
     # FIXME: These should be set in all toolchains building sanitizers,
     # see discussion at https://reviews.llvm.org/D127906#3587329
     use_asan = false
+    use_hwasan = false
     use_tsan = false
     use_ubsan = false
   }



More information about the llvm-commits mailing list