[PATCH] D70868: [libunwind] Emit dependent libraries only when detected by CMake
Michał Górny via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sat Nov 30 06:22:50 PST 2019
mgorny created this revision.
mgorny added reviewers: phosek, ldionne.
Herald added subscribers: jfb, dexonsmith, christof, krytarowski, srhines.
996e62eef75 added Linux-specific dependent libraries to libunwind
sources. As a result, building libunwind with modern LLD on *BSD
started failing due to trying to link libdl. Instead, add those
libraries only if they were detected by CMake.
While technically we could create a long list of systems that need -ldl
and -lpthread, maintaining a duplicate list makes little sense when
CMake needs to detect it for non-LLD systems anyway. Remove existing
system exceptions since they should be covered by the CMake check
anyway.
Remove -D_LIBUNWIND_HAS_COMMENT_LIB_PRAGMA since it is no longer
explicitly needed, if we make the library-specific defines dependent
on presence of this pragma support.
https://reviews.llvm.org/D70868
Files:
libunwind/CMakeLists.txt
libunwind/src/AddressSpace.hpp
libunwind/src/RWMutex.hpp
Index: libunwind/src/RWMutex.hpp
===================================================================
--- libunwind/src/RWMutex.hpp
+++ libunwind/src/RWMutex.hpp
@@ -17,7 +17,7 @@
#include <windows.h>
#elif !defined(_LIBUNWIND_HAS_NO_THREADS)
#include <pthread.h>
-#if defined(__unix__) && !defined(__ANDROID__) && defined(__ELF__) && defined(_LIBUNWIND_HAS_COMMENT_LIB_PRAGMA)
+#if defined(__ELF__) && defined(_LIBUNWIND_LINK_PTHREAD_LIB)
#pragma comment(lib, "pthread")
#endif
#endif
Index: libunwind/src/AddressSpace.hpp
===================================================================
--- libunwind/src/AddressSpace.hpp
+++ libunwind/src/AddressSpace.hpp
@@ -27,7 +27,7 @@
#if _LIBUNWIND_USE_DLADDR
#include <dlfcn.h>
-#if defined(__unix__) && defined(__ELF__) && defined(_LIBUNWIND_HAS_COMMENT_LIB_PRAGMA)
+#if defined(__ELF__) && defined(_LIBUNWIND_LINK_DL_LIB)
#pragma comment(lib, "dl")
#endif
#endif
Index: libunwind/CMakeLists.txt
===================================================================
--- libunwind/CMakeLists.txt
+++ libunwind/CMakeLists.txt
@@ -352,7 +352,12 @@
endif()
if (LIBUNWIND_HAS_COMMENT_LIB_PRAGMA)
- add_definitions(-D_LIBUNWIND_HAS_COMMENT_LIB_PRAGMA)
+ if (LIBUNWIND_HAS_DL_LIB)
+ add_definitions(-D_LIBUNWIND_LINK_DL_LIB)
+ endif()
+ if (LIBUNWIND_HAS_PTHREAD_LIB)
+ add_definitions(-D_LIBUNWIND_LINK_PTHREAD_LIB)
+ endif()
endif()
#===============================================================================
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D70868.231588.patch
Type: text/x-patch
Size: 1486 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20191130/8f34fe23/attachment-0001.bin>
More information about the cfe-commits
mailing list