Skip to content

Commit

Permalink
[CMake] Link to compiler-rt if LIBUNWIND_USE_COMPILER_RT is ON.
Browse files Browse the repository at this point in the history
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
  • Loading branch information
cdavis5e committed Oct 8, 2018
1 parent 43bf991 commit 869e5d1
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 3 deletions.
10 changes: 8 additions & 2 deletions libunwind/cmake/config-ix.cmake
Expand Up @@ -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
Expand All @@ -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
Expand Down
7 changes: 6 additions & 1 deletion libunwind/src/CMakeLists.txt
Expand Up @@ -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)
Expand Down

0 comments on commit 869e5d1

Please sign in to comment.