aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Collingbourne <pcc@google.com>2025-06-05 17:21:59 -0700
committerPeter Collingbourne <peter@pcc.me.uk>2025-06-05 17:21:59 -0700
commitd035b6f6256740d41d4882a82324817ae9a7e9cc (patch)
tree1b0ec52c921b57769fdae815ccd82862aab87a4c
parentde3a9ea510fecd501b4dd57534cf300d1c9622c9 (diff)
downloadllvm-users/pcc/spr/gn-build-add-use_hwasan-flag.zip
llvm-users/pcc/spr/gn-build-add-use_hwasan-flag.tar.gz
llvm-users/pcc/spr/gn-build-add-use_hwasan-flag.tar.bz2
[𝘀𝗽𝗿] initial versionusers/pcc/spr/gn-build-add-use_hwasan-flag
Created using spr 1.3.6-beta.1
-rw-r--r--llvm/utils/gn/build/BUILD.gn9
-rw-r--r--llvm/utils/gn/build/buildflags.gni3
-rw-r--r--llvm/utils/gn/build/toolchain/BUILD.gn1
3 files changed, 12 insertions, 1 deletions
diff --git a/llvm/utils/gn/build/BUILD.gn b/llvm/utils/gn/build/BUILD.gn
index 9b5254e..2d0bed5 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 ca43a24..11fd455 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 00d9df1..271aebf 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
}