Skip to content

Commit

Permalink
[compiler-rt] Fix scudo build on ARM
Browse files Browse the repository at this point in the history
The build of scudo was failing on armv7l, with undefined references
to unwinder symbols, such as __aeabi_unwind_cpp_pr0. These are
needed by RTGwpAsan and thus, on ARM, scudo must also be linked
against an unwind library.

The cmake command that caused the build failure was:

cmake --fresh -S "$PWD/llvm/" -B "$PWD/build/" -G Ninja \
  -DCMAKE_INSTALL_PREFIX="$PWD/install" \
  -DCMAKE_BUILD_TYPE=Release \
  -DLLVM_ENABLE_PROJECTS="clang;lld;lldb;clang-tools-extra;polly" \
  -DLLVM_ENABLE_RUNTIMES="compiler-rt;libcxx;libcxxabi;libunwind" \
  -DLLVM_TOOLCHAIN_TOOLS="llvm-ar;llvm-ranlib;llvm-objdump;\
llvm-rc;llvm-cvtres;llvm-nm;llvm-strings;llvm-readobj;\
llvm-dlltool;llvm-pdbutil;llvm-objcopy;llvm-strip;llvm-cov;\
llvm-profdata;llvm-addr2line;llvm-symbolizer;llvm-windres;llvm-ml;\
llvm-readelf;llvm-size" \
  -DLLVM_INSTALL_BINUTILS_SYMLINKS=OFF -DLLVM_PARALLEL_LINK_JOBS=1

Fixes llvm#60115

Reviewed By: hctim

Differential Revision: https://reviews.llvm.org/D142888
  • Loading branch information
luporl authored and gysit committed Apr 11, 2023
1 parent 8350b66 commit 7ffb942
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 additions & 2 deletions compiler-rt/lib/scudo/standalone/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,19 @@ set(SCUDO_SOURCES_CXX_WRAPPERS
)

set(SCUDO_OBJECT_LIBS)
set(SCUDO_LINK_LIBS)

if (COMPILER_RT_HAS_GWP_ASAN)
if(COMPILER_RT_USE_LLVM_UNWINDER)
list(APPEND SCUDO_LINK_LIBS ${COMPILER_RT_UNWINDER_LINK_LIBS} dl)
elseif (COMPILER_RT_HAS_GCC_S_LIB)
list(APPEND SCUDO_LINK_LIBS gcc_s)
elseif (COMPILER_RT_HAS_GCC_LIB)
list(APPEND SCUDO_LINK_LIBS gcc)
else()
message(FATAL_ERROR "No suitable unwinder library")
endif()

add_dependencies(scudo_standalone gwp_asan)
list(APPEND SCUDO_OBJECT_LIBS
RTGwpAsan RTGwpAsanBacktraceLibc RTGwpAsanSegvHandler
Expand All @@ -152,8 +163,6 @@ if (COMPILER_RT_HAS_GWP_ASAN)

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/)

Expand Down

0 comments on commit 7ffb942

Please sign in to comment.