[compiler-rt] 11b7ce2 - [ASanStableABI][Driver] Stop linking to asan dylib when stable abi is enabled
Blue Gaston via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 2 11:31:30 PDT 2023
Author: Blue Gaston
Date: 2023-08-02T11:30:29-07:00
New Revision: 11b7ce26f2a22ca147feaaf1cfd2d21b85fc3d83
URL: https://github.com/llvm/llvm-project/commit/11b7ce26f2a22ca147feaaf1cfd2d21b85fc3d83
DIFF: https://github.com/llvm/llvm-project/commit/11b7ce26f2a22ca147feaaf1cfd2d21b85fc3d83.diff
LOG: [ASanStableABI][Driver] Stop linking to asan dylib when stable abi is enabled
This patch enables linking of the static archive when fsanitize-stable-abi is set and stops linking to the asan dylib.
To link to the Address Sanitizer stable abi static library use "-fsanitize=address -fsanitize-stable-abi"
Updates a test with these flags.
rdar://112480890
Differential Revision: https://reviews.llvm.org/D156718
Added:
Modified:
clang/include/clang/Driver/SanitizerArgs.h
clang/lib/Driver/ToolChains/Darwin.cpp
compiler-rt/test/asan_abi/CMakeLists.txt
compiler-rt/test/asan_abi/TestCases/Darwin/llvm_interface_symbols.cpp
compiler-rt/test/asan_abi/TestCases/linkstaticlibrary.cpp
compiler-rt/test/asan_abi/lit.site.cfg.py.in
Removed:
################################################################################
diff --git a/clang/include/clang/Driver/SanitizerArgs.h b/clang/include/clang/Driver/SanitizerArgs.h
index 047b50626c44c5..07070ec4fc0653 100644
--- a/clang/include/clang/Driver/SanitizerArgs.h
+++ b/clang/include/clang/Driver/SanitizerArgs.h
@@ -76,6 +76,7 @@ class SanitizerArgs {
bool DiagnoseErrors = true);
bool needsSharedRt() const { return SharedRuntime; }
+ bool needsStableAbi() const { return StableABI; }
bool needsMemProfRt() const { return NeedsMemProfRt; }
bool needsAsanRt() const { return Sanitizers.has(SanitizerKind::Address); }
diff --git a/clang/lib/Driver/ToolChains/Darwin.cpp b/clang/lib/Driver/ToolChains/Darwin.cpp
index 65bd6c6a7eb35a..239fbf21d77f5a 100644
--- a/clang/lib/Driver/ToolChains/Darwin.cpp
+++ b/clang/lib/Driver/ToolChains/Darwin.cpp
@@ -1484,9 +1484,13 @@ void DarwinClang::AddLinkRuntimeLibArgs(const ArgList &Args,
if (Sanitize.linkRuntimes()) {
if (Sanitize.needsAsanRt()) {
- assert(Sanitize.needsSharedRt() &&
- "Static sanitizer runtimes not supported");
- AddLinkSanitizerLibArgs(Args, CmdArgs, "asan");
+ if (Sanitize.needsStableAbi()) {
+ AddLinkSanitizerLibArgs(Args, CmdArgs, "asan_abi", /*shared=*/false);
+ } else {
+ assert(Sanitize.needsSharedRt() &&
+ "Static sanitizer runtimes not supported");
+ AddLinkSanitizerLibArgs(Args, CmdArgs, "asan");
+ }
}
if (Sanitize.needsLsanRt())
AddLinkSanitizerLibArgs(Args, CmdArgs, "lsan");
diff --git a/compiler-rt/test/asan_abi/CMakeLists.txt b/compiler-rt/test/asan_abi/CMakeLists.txt
index a1f42ca076edf7..f28cf6cd1da6ea 100644
--- a/compiler-rt/test/asan_abi/CMakeLists.txt
+++ b/compiler-rt/test/asan_abi/CMakeLists.txt
@@ -13,7 +13,6 @@ set(ASAN_ABI_TEST_DEPS ${SANITIZER_COMMON_LIT_TEST_DEPS})
if(NOT COMPILER_RT_STANDALONE_BUILD)
list(APPEND ASAN_ABI_TEST_DEPS asan_abi)
endif()
-set(ASAN_ABI_DYNAMIC_TEST_DEPS ${ASAN_ABI_TEST_DEPS})
set(ASAN_ABI_TEST_ARCH ${ASAN_ABI_SUPPORTED_ARCH})
if(APPLE)
@@ -27,7 +26,6 @@ foreach(arch ${ASAN_ABI_TEST_ARCH})
string(TOLOWER "-${arch}-${OS_NAME}" ASAN_ABI_TEST_CONFIG_SUFFIX)
get_bits_for_arch(${arch} ASAN_ABI_TEST_BITS)
get_test_cc_for_arch(${arch} ASAN_ABI_TEST_TARGET_CC ASAN_ABI_TEST_TARGET_CFLAGS)
- set(ASAN_ABI_TEST_DYNAMIC True)
string(TOUPPER ${arch} ARCH_UPPER_CASE)
set(CONFIG_NAME ${ARCH_UPPER_CASE}${OS_NAME}Config)
diff --git a/compiler-rt/test/asan_abi/TestCases/Darwin/llvm_interface_symbols.cpp b/compiler-rt/test/asan_abi/TestCases/Darwin/llvm_interface_symbols.cpp
index 96f59191b8d46a..c651c32b489e4e 100644
--- a/compiler-rt/test/asan_abi/TestCases/Darwin/llvm_interface_symbols.cpp
+++ b/compiler-rt/test/asan_abi/TestCases/Darwin/llvm_interface_symbols.cpp
@@ -1,6 +1,6 @@
// RUN: %clang_asan_abi -O0 -c -fsanitize-stable-abi -fsanitize=address %s -o %t.o
// RUN: %clangxx -c %p/../../../../lib/asan_abi/asan_abi.cpp -o asan_abi.o
-// RUN: %clangxx -dead_strip -o %t %t.o %libasan_abi asan_abi.o && %run %t 2>&1
+// RUN: %clangxx -dead_strip -o %t %t.o -fsanitize-stable-abi -fsanitize=address asan_abi.o && %run %t 2>&1
// RUN: %clangxx -x c++-header -o - -E %p/../../../../lib/asan/asan_interface.inc \
// RUN: | sed "s/INTERFACE_FUNCTION/\nINTERFACE_FUNCTION/g" > %t.asan_interface.inc
// RUN: llvm-nm -g %libasan_abi \
@@ -22,6 +22,9 @@
// RUN: sort %t.exports | uniq > %t.exports-sorted
// RUN:
diff %t.imports-sorted %t.exports-sorted
+// Ensure that there is no dynamic dylib linked.
+// RUN: otool -L %t | (! grep -q "dynamic.dylib")
+
// UNSUPPORTED: ios
int main() { return 0; }
diff --git a/compiler-rt/test/asan_abi/TestCases/linkstaticlibrary.cpp b/compiler-rt/test/asan_abi/TestCases/linkstaticlibrary.cpp
index 0bb14d322c67c2..10d3645045dff0 100644
--- a/compiler-rt/test/asan_abi/TestCases/linkstaticlibrary.cpp
+++ b/compiler-rt/test/asan_abi/TestCases/linkstaticlibrary.cpp
@@ -1,5 +1,5 @@
// RUN: %clang_asan_abi -O2 -c -fsanitize-stable-abi -fsanitize=address -O0 %s -o %t.o
// RUN: %clangxx -c %p/../../../lib/asan_abi/asan_abi.cpp -o asan_abi.o
-// RUN: %clangxx -o %t %t.o %libasan_abi asan_abi.o && %run %t 2>&1
+// RUN: %clangxx -o %t %t.o -fsanitize-stable-abi -fsanitize=address asan_abi.o && %run %t 2>&1
int main() { return 0; }
diff --git a/compiler-rt/test/asan_abi/lit.site.cfg.py.in b/compiler-rt/test/asan_abi/lit.site.cfg.py.in
index f4456f9a389be4..0261159b664a27 100644
--- a/compiler-rt/test/asan_abi/lit.site.cfg.py.in
+++ b/compiler-rt/test/asan_abi/lit.site.cfg.py.in
@@ -8,7 +8,6 @@ config.bits = "@ASAN_ABI_TEST_BITS@"
config.arm_thumb = "@COMPILER_RT_ARM_THUMB@"
config.apple_platform = "@ASAN_ABI_TEST_APPLE_PLATFORM@"
config.apple_platform_min_deployment_target_flag = "@ASAN_ABI_TEST_MIN_DEPLOYMENT_TARGET_FLAG@"
-config.asan_abi_dynamic = @ASAN_ABI_TEST_DYNAMIC@
config.target_arch = "@ASAN_ABI_TEST_TARGET_ARCH@"
# Load common config for all compiler-rt lit tests.
More information about the llvm-commits
mailing list