From 26ccb61befefb8ac110c71d233b679618beb4284 Mon Sep 17 00:00:00 2001 From: phlax Date: Thu, 11 Apr 2024 23:45:52 +0100 Subject: [PATCH] bazel: Shift ASAN flags to .bazelrc (#33472) Signed-off-by: Ryan Northey --- .bazelrc | 20 ++++++++++++++------ bazel/setup_clang.sh | 7 ------- mobile/.bazelrc | 7 ++++--- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/.bazelrc b/.bazelrc index 51490a2493fb..7f0db6028a62 100644 --- a/.bazelrc +++ b/.bazelrc @@ -86,6 +86,8 @@ build:sanitizer --linkopt -ldl build:clang --action_env=BAZEL_COMPILER=clang build:clang --action_env=CC=clang --action_env=CXX=clang++ build:clang --linkopt=-fuse-ld=lld +build:clang --action_env=CC=clang --host_action_env=CC=clang +build:clang --action_env=CXX=clang++ --host_action_env=CXX=clang++ # Flags for Clang + PCH build:clang-pch --spawn_strategy=local @@ -103,7 +105,6 @@ build:clang-tidy --output_groups=report build:clang-tidy --build_tag_filters=-notidy # Basic ASAN/UBSAN that works for gcc -build:asan --action_env=ENVOY_ASAN=1 build:asan --config=sanitizer # ASAN install its signal handler, disable ours so the stacktrace will be printed by ASAN build:asan --define signal_trace=disabled @@ -126,11 +127,18 @@ build:asan --copt -O1 build:asan --copt -fno-optimize-sibling-calls # Clang ASAN/UBSAN -build:clang-asan --config=clang -build:clang-asan --config=asan -build:clang-asan --linkopt -fuse-ld=lld -build:clang-asan --linkopt --rtlib=compiler-rt -build:clang-asan --linkopt --unwindlib=libgcc +build:clang-asan-common --config=clang +build:clang-asan-common --config=asan +build:clang-asan-common --linkopt -fuse-ld=lld +build:clang-asan-common --linkopt --rtlib=compiler-rt +build:clang-asan-common --linkopt --unwindlib=libgcc + +build:clang-asan --config=clang-asan-common +build:clang-asan --linkopt=-l:libclang_rt.ubsan_standalone.a +build:clang-asan --linkopt=-l:libclang_rt.ubsan_standalone_cxx.a +build:clang-asan --action_env=ENVOY_UBSAN_VPTR=1 +build:clang-asan --copt=-fsanitize=vptr,function +build:clang-asan --linkopt=-fsanitize=vptr,function # macOS build:macos --cxxopt=-std=c++20 --host_cxxopt=-std=c++20 diff --git a/bazel/setup_clang.sh b/bazel/setup_clang.sh index 1a8e2466f3cb..46308db868b4 100755 --- a/bazel/setup_clang.sh +++ b/bazel/setup_clang.sh @@ -22,17 +22,10 @@ RT_LIBRARY_PATH="${LLVM_LIBDIR}/clang/${LLVM_VERSION}/lib/${LLVM_TARGET}" echo "# Generated file, do not edit. If you want to disable clang, just delete this file. build:clang --action_env='PATH=${PATH}' --host_action_env='PATH=${PATH}' -build:clang --action_env=CC=clang --host_action_env=CC=clang -build:clang --action_env=CXX=clang++ --host_action_env=CXX=clang++ build:clang --action_env='LLVM_CONFIG=${LLVM_PREFIX}/bin/llvm-config' --host_action_env='LLVM_CONFIG=${LLVM_PREFIX}/bin/llvm-config' build:clang --repo_env='LLVM_CONFIG=${LLVM_PREFIX}/bin/llvm-config' build:clang --linkopt='-L$(llvm-config --libdir)' build:clang --linkopt='-Wl,-rpath,$(llvm-config --libdir)' -build:clang-asan --action_env=ENVOY_UBSAN_VPTR=1 -build:clang-asan --copt=-fsanitize=vptr,function -build:clang-asan --linkopt=-fsanitize=vptr,function build:clang-asan --linkopt='-L${RT_LIBRARY_PATH}' -build:clang-asan --linkopt=-l:libclang_rt.ubsan_standalone.a -build:clang-asan --linkopt=-l:libclang_rt.ubsan_standalone_cxx.a " >"${BAZELRC_FILE}" diff --git a/mobile/.bazelrc b/mobile/.bazelrc index c44000855eab..08a62554cc76 100644 --- a/mobile/.bazelrc +++ b/mobile/.bazelrc @@ -100,8 +100,9 @@ build:mobile-asan-dev --copt -fsanitize=address build:mobile-asan-dev --linkopt -fsanitize=address build:mobile-asan-dev --platform_suffix=-asan -build:clang-asan --linkopt --rtlib=compiler-rt -build:clang-asan --linkopt --unwindlib=libgcc +build:mobile-clang-asan --linkopt --rtlib=compiler-rt +build:mobile-clang-asan --linkopt --unwindlib=libgcc +build:mobile-clang-asan --config=clang-asan-common # Locally-runnable TSAN config build:mobile-tsan-dev --features=tsan @@ -204,7 +205,7 @@ build:mobile-remote-ci-linux-clang --cxxopt=-std=c++17 --host_cxxopt=-std=c++17 ############################################################################# # mobile-remote-ci-linux-asan: These options are Linux-only using Clang and AddressSanitizer ############################################################################# -build:mobile-remote-ci-linux-asan --config=clang-asan +build:mobile-remote-ci-linux-asan --config=mobile-clang-asan build:mobile-remote-ci-linux-asan --config=mobile-remote-ci-linux-clang build:mobile-remote-ci-linux-asan --config=remote-ci build:mobile-remote-ci-linux-asan --define=envoy_full_protos=disabled