forked from OSchip/llvm-project
[libcxxabi] Fix arm build failer with libgcc
Both arm32 armv7/armv8 bots which do not use compiler-rt are failing to a linking issue: [100%] Built target cxxabi_static CMakeFiles/cxxabi_shared.dir/cxa_demangle.cpp.o: In function `(anonymous namespace)::itanium_demangle::OutputStream::writeUnsigned(unsigned long long, bool)': /home/buildslave/buildslave/libcxx-libcxxabi-libunwind-armv7-linux-noexceptions/llvm/projects/libcxxabi/src/demangle/Utility.h:55: undefined reference to `__aeabi_uldivmod' /home/buildslave/buildslave/libcxx-libcxxabi-libunwind-armv7-linux-noexceptions/llvm/projects/libcxxabi/src/demangle/Utility.h:56: undefined reference to `__aeabi_uldivmod' clang-6.0: error: linker command failed with exit code 1 (use -v to see invocation) It seems after r371273 OutputStream is used more extensively and is pulling OutputStream::writeUnsigned (which thus requires unsigned integer module). The straightfoward fix is to explicit link against libgcc if compiler-rt is not used. llvm-svn: 372921
This commit is contained in:
parent
5e9cdeed77
commit
6023cf2234
|
@ -7,6 +7,7 @@ include(CheckCSourceCompiles)
|
|||
check_library_exists(c fopen "" LIBCXXABI_HAS_C_LIB)
|
||||
if (NOT LIBCXXABI_USE_COMPILER_RT)
|
||||
check_library_exists(gcc_s __gcc_personality_v0 "" LIBCXXABI_HAS_GCC_S_LIB)
|
||||
check_library_exists(gcc __aeabi_uldivmod "" LIBCXXABI_HAS_GCC_LIB)
|
||||
endif ()
|
||||
|
||||
# libc++abi is built with -nodefaultlibs, so we want all our checks to also
|
||||
|
@ -26,8 +27,13 @@ if (LIBCXXABI_HAS_NODEFAULTLIBS_FLAG)
|
|||
list(APPEND CMAKE_REQUIRED_FLAGS -rtlib=compiler-rt)
|
||||
find_compiler_rt_library(builtins LIBCXXABI_BUILTINS_LIBRARY)
|
||||
list(APPEND CMAKE_REQUIRED_LIBRARIES "${LIBCXXABI_BUILTINS_LIBRARY}")
|
||||
elseif (LIBCXXABI_HAS_GCC_S_LIB)
|
||||
list(APPEND CMAKE_REQUIRED_LIBRARIES gcc_s)
|
||||
else ()
|
||||
if (LIBCXXABI_HAS_GCC_S_LIB)
|
||||
list(APPEND CMAKE_REQUIRED_LIBRARIES gcc_s)
|
||||
endif ()
|
||||
if (LIBCXXABI_HAS_GCC_LIB)
|
||||
list(APPEND CMAKE_REQUIRED_LIBRARIES gcc)
|
||||
endif ()
|
||||
endif ()
|
||||
if (MINGW)
|
||||
# Mingw64 requires quite a few "C" runtime libraries in order for basic
|
||||
|
|
|
@ -91,6 +91,10 @@ if (MINGW)
|
|||
list(APPEND LIBCXXABI_LIBRARIES ${MINGW_LIBRARIES})
|
||||
endif()
|
||||
|
||||
if (NOT LIBCXXABI_USE_COMPILER_RT)
|
||||
add_library_flags_if(LIBCXXABI_HAS_GCC_LIB gcc)
|
||||
endif ()
|
||||
|
||||
# Setup flags.
|
||||
add_link_flags_if_supported(-nodefaultlibs)
|
||||
|
||||
|
|
Loading…
Reference in New Issue