diff --git a/libcxx/CMakeLists.txt b/libcxx/CMakeLists.txt --- a/libcxx/CMakeLists.txt +++ b/libcxx/CMakeLists.txt @@ -759,6 +759,9 @@ endif() elseif (LIBCXX_HAS_GCC_LIB) target_link_libraries(${target} PRIVATE gcc) + if (LIBCXX_HAS_DL_LIB) + target_link_libraries(${target} PRIVATE dl) + endif () elseif (LIBCXX_HAS_GCC_S_LIB) target_link_libraries(${target} PRIVATE gcc_s) endif() diff --git a/libcxx/cmake/config-ix.cmake b/libcxx/cmake/config-ix.cmake --- a/libcxx/cmake/config-ix.cmake +++ b/libcxx/cmake/config-ix.cmake @@ -18,6 +18,8 @@ else() if(ANDROID) check_library_exists(gcc __gcc_personality_v0 "" LIBCXX_HAS_GCC_LIB) + # Needed by the static libgcc unwinder + check_library_exists(dl dl_iterate_phdr "" LIBCXX_HAS_DL_LIB) else() check_library_exists(gcc_s __gcc_personality_v0 "" LIBCXX_HAS_GCC_S_LIB) endif() diff --git a/libcxxabi/cmake/config-ix.cmake b/libcxxabi/cmake/config-ix.cmake --- a/libcxxabi/cmake/config-ix.cmake +++ b/libcxxabi/cmake/config-ix.cmake @@ -8,6 +8,8 @@ if (NOT LIBCXXABI_USE_COMPILER_RT) if (ANDROID) check_library_exists(gcc __gcc_personality_v0 "" LIBCXXABI_HAS_GCC_LIB) + # Needed by the static libgcc unwinder + check_library_exists(dl dl_iterate_phdr "" LIBCXXABI_HAS_DL_LIB) else () check_library_exists(gcc_s __gcc_personality_v0 "" LIBCXXABI_HAS_GCC_S_LIB) check_library_exists(gcc __aeabi_uldivmod "" LIBCXXABI_HAS_GCC_LIB) @@ -76,13 +78,11 @@ # Check libraries if(FUCHSIA) - set(LIBCXXABI_HAS_DL_LIB NO) set(LIBCXXABI_HAS_PTHREAD_LIB NO) check_library_exists(c __cxa_thread_atexit_impl "" LIBCXXABI_HAS_CXA_THREAD_ATEXIT_IMPL) set(LIBCXXABI_HAS_SYSTEM_LIB NO) else() - check_library_exists(dl dladdr "" LIBCXXABI_HAS_DL_LIB) check_library_exists(pthread pthread_once "" LIBCXXABI_HAS_PTHREAD_LIB) check_library_exists(c __cxa_thread_atexit_impl "" LIBCXXABI_HAS_CXA_THREAD_ATEXIT_IMPL) diff --git a/libcxxabi/src/CMakeLists.txt b/libcxxabi/src/CMakeLists.txt --- a/libcxxabi/src/CMakeLists.txt +++ b/libcxxabi/src/CMakeLists.txt @@ -105,6 +105,7 @@ if (NOT LIBCXXABI_USE_COMPILER_RT) add_library_flags_if(LIBCXXABI_HAS_GCC_LIB gcc) + add_library_flags_if(LIBCXXABI_HAS_DL_LIB dl) endif () # Setup flags.