summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCharles Davis <cdavis5x@gmail.com>2018-10-08 18:35:00 +0000
committerCharles Davis <cdavis5x@gmail.com>2018-10-08 18:35:00 +0000
commit869e5d1fca1caaddfc6c3f8fc7de447e874f49ee (patch)
treec0199e433a55e8637ef1740ab1bf0a8e1ec8db41
parent43bf9917cc54be406c0efb811635407dbb99c984 (diff)
downloadbcm5719-llvm-869e5d1fca1caaddfc6c3f8fc7de447e874f49ee.tar.gz
bcm5719-llvm-869e5d1fca1caaddfc6c3f8fc7de447e874f49ee.zip
[CMake] Link to compiler-rt if LIBUNWIND_USE_COMPILER_RT is ON.
Summary: If `-nodefaultlibs` is given, we weren't actually linking to it. This was true irrespective of passing `-rtlib=compiler-rt` (see previous patch). Now we explicitly link it to handle that case. I wonder if we should be linking these libraries only if we're using `-nodefaultlibs`... Reviewers: beanz Subscribers: dberris, mgorny, christof, chrib, cfe-commits Differential Revision: https://reviews.llvm.org/D51657 llvm-svn: 343990
-rw-r--r--libunwind/cmake/config-ix.cmake10
-rw-r--r--libunwind/src/CMakeLists.txt7
2 files changed, 14 insertions, 3 deletions
diff --git a/libunwind/cmake/config-ix.cmake b/libunwind/cmake/config-ix.cmake
index f4f9ee8a965..670c31f2d09 100644
--- a/libunwind/cmake/config-ix.cmake
+++ b/libunwind/cmake/config-ix.cmake
@@ -7,6 +7,7 @@ check_library_exists(c fopen "" LIBUNWIND_HAS_C_LIB)
if (NOT LIBUNWIND_USE_COMPILER_RT)
check_library_exists(gcc_s __gcc_personality_v0 "" LIBUNWIND_HAS_GCC_S_LIB)
+ check_library_exists(gcc __absvdi2 "" LIBUNWIND_HAS_GCC_LIB)
endif()
# libunwind is built with -nodefaultlibs, so we want all our checks to also
@@ -25,8 +26,13 @@ if (LIBUNWIND_HAS_NODEFAULTLIBS_FLAG)
if (LIBUNWIND_USE_COMPILER_RT)
find_compiler_rt_library(builtins LIBUNWIND_BUILTINS_LIBRARY)
list(APPEND CMAKE_REQUIRED_LIBRARIES "${LIBUNWIND_BUILTINS_LIBRARY}")
- elseif (LIBUNWIND_HAS_GCC_S_LIB)
- list(APPEND CMAKE_REQUIRED_LIBRARIES gcc_s)
+ else ()
+ if (LIBUNWIND_HAS_GCC_S_LIB)
+ list(APPEND CMAKE_REQUIRED_LIBRARIES gcc_s)
+ endif ()
+ if (LIBUNWIND_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
diff --git a/libunwind/src/CMakeLists.txt b/libunwind/src/CMakeLists.txt
index a5e608429b7..79d04626309 100644
--- a/libunwind/src/CMakeLists.txt
+++ b/libunwind/src/CMakeLists.txt
@@ -53,7 +53,12 @@ set(LIBUNWIND_SOURCES
# Generate library list.
set(libraries)
append_if(libraries LIBUNWIND_HAS_C_LIB c)
-append_if(libraries LIBUNWIND_HAS_GCC_S_LIB gcc_s)
+if (LIBUNWIND_USE_COMPILER_RT)
+ list(APPEND libraries "${LIBUNWIND_BUILTINS_LIBRARY}")
+else()
+ append_if(libraries LIBUNWIND_HAS_GCC_S_LIB gcc_s)
+ append_if(libraries LIBUNWIND_HAS_GCC_LIB gcc)
+endif()
append_if(libraries LIBUNWIND_HAS_DL_LIB dl)
if (LIBUNWIND_ENABLE_THREADS)
append_if(libraries LIBUNWIND_HAS_PTHREAD_LIB pthread)
OpenPOWER on IntegriCloud