[PATCH] D130571: [compiler-rt][Sanitizer] Link sanitizer libs with -latomic on SPARC
Rainer Orth via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 26 07:20:16 PDT 2022
ro created this revision.
ro added reviewers: glaubitz, MaskRay, vitalybuka.
ro added a project: Sanitizers.
Herald added subscribers: Enna1, StephenFan, fedor.sergeev, mgorny, dberris, jyknight.
Herald added a project: All.
ro requested review of this revision.
Herald added a subscriber: Sanitizers.
When building on Linux/sparc64, the 32-bit `libclang_rt.asan.so`, `libclang_rt.ubsan_minimal.so`, and `libclang_rt.ubsan_standalone.so` failed to link with undefined references to 64-bit atomics, which `clang` cannot inline. Even D130569 <https://reviews.llvm.org/D130569> didn't help because those libraries are linked with `-nodefaultlibs`, so dependent libraries need to be added explicitly.
That's what this patch does.
Tested on `sparc64-unknown-linux-gnu` and `sparcv9-sun-solaris2.11`.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D130571
Files:
compiler-rt/CMakeLists.txt
Index: compiler-rt/CMakeLists.txt
===================================================================
--- compiler-rt/CMakeLists.txt
+++ compiler-rt/CMakeLists.txt
@@ -479,6 +479,12 @@
append_list_if(C_SUPPORTS_NODEFAULTLIBS_FLAG -nodefaultlibs SANITIZER_COMMON_LINK_FLAGS)
append_list_if(COMPILER_RT_HAS_Z_TEXT -Wl,-z,text SANITIZER_COMMON_LINK_FLAGS)
+# Only necessary for 32-bit SPARC. Solaris 11.2+ ld uses -z ignore/-z record
+# natively, but supports --as-needed/--no-as-needed for GNU ld compatibility.
+if("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "sparc")
+ list(APPEND SANITIZER_COMMON_LINK_LIBS -Wl,--as-needed atomic -Wl,--no-as-needed)
+endif()
+
if (COMPILER_RT_USE_BUILTINS_LIBRARY)
string(REPLACE "-Wl,-z,defs" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
else()
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D130571.447681.patch
Type: text/x-patch
Size: 809 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220726/506b9529/attachment.bin>
More information about the llvm-commits
mailing list