[PATCH] D142888: [compiler-rt] Fix scudo build on ARM
Leandro Lupori via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 27 07:19:21 PDT 2023
luporl updated this revision to Diff 508646.
luporl retitled this revision from "[compiler-rt] Fix building GWPASAN on ARM" to "[compiler-rt] Fix scudo build on ARM".
luporl added a comment.
Address reviewer's comments
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D142888/new/
https://reviews.llvm.org/D142888
Files:
compiler-rt/lib/scudo/standalone/CMakeLists.txt
Index: compiler-rt/lib/scudo/standalone/CMakeLists.txt
===================================================================
--- compiler-rt/lib/scudo/standalone/CMakeLists.txt
+++ compiler-rt/lib/scudo/standalone/CMakeLists.txt
@@ -43,6 +43,27 @@
append_list_if(COMPILER_RT_HAS_NOSTDLIBXX_FLAG -nostdlib++ SCUDO_LINK_FLAGS)
append_list_if(CXX_SUPPORTS_UNWINDLIB_NONE_FLAG --unwindlib=none SCUDO_LINK_FLAGS)
+# Link to the apropriate unwind lib, if any.
+if(COMPILER_RT_USE_LLVM_UNWINDER)
+ set(SCUDO_LINK_LIBS ${COMPILER_RT_UNWINDER_LINK_LIBS} dl)
+elseif(COMPILER_RT_HAS_GWP_ASAN AND (CAN_TARGET_arm OR CAN_TARGET_armhf))
+ # On ARM, we must link against an unwind lib when GWPAsan is used, otherwise
+ # we get undefined references to __aeabi_unwind_cpp_pr* symbols.
+ # This is because object files compiled with -funwind-tables end up
+ # referencing these symbols on ARM, while on other architectures, such as
+ # x86_64 and AArch64, only the .eh_frame section is added, but no references
+ # to an unwind library are made.
+ # As COMPILER_RT_USE_LLVM_UNWINDER must be set for compiler-rt to be linked
+ # against libunwind, only libgcc_s/libgcc needs to be handled here.
+ if (COMPILER_RT_HAS_GCC_S_LIB)
+ set(SCUDO_LINK_LIBS gcc_s)
+ elseif (COMPILER_RT_HAS_GCC_LIB)
+ set(SCUDO_LINK_LIBS gcc)
+ else()
+ message(FATAL_ERROR "No suitable unwinder library")
+ endif()
+endif()
+
if(COMPILER_RT_SCUDO_STANDALONE_SYSROOT_PATH)
list(APPEND SCUDO_CFLAGS "--sysroot=${COMPILER_RT_SCUDO_STANDALONE_SYSROOT_PATH}")
endif()
@@ -146,8 +167,6 @@
endif()
-set(SCUDO_LINK_LIBS ${COMPILER_RT_UNWINDER_LINK_LIBS})
-
if(COMPILER_RT_BUILD_SCUDO_STANDALONE_WITH_LLVM_LIBC)
include_directories(${COMPILER_RT_BINARY_DIR}/../libc/include/)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D142888.508646.patch
Type: text/x-patch
Size: 1767 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230327/681f7b1a/attachment.bin>
More information about the llvm-commits
mailing list