[compiler-rt] 64c0bdd - [compiler-rt] Check for and use -lunwind when linking with -nodefaultlibs (#65912)

via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 15 01:49:49 PDT 2023


Author: Martin Storsjö
Date: 2023-09-15T11:49:45+03:00
New Revision: 64c0bddb7639dd4bfad73fbbc909ca739b84aa10

URL: https://github.com/llvm/llvm-project/commit/64c0bddb7639dd4bfad73fbbc909ca739b84aa10
DIFF: https://github.com/llvm/llvm-project/commit/64c0bddb7639dd4bfad73fbbc909ca739b84aa10.diff

LOG: [compiler-rt] Check for and use -lunwind when linking with -nodefaultlibs (#65912)

If libc++ is available and should be used as the ubsan C++ ABI library,
the check for libc++ might fail if libc++ is a static library, as the
-nodefaultlibs flag inhibits a potential compiler default -lunwind.

Just like the -nodefaultlibs configuration tests for and manually adds a
bunch of compiler default libraries, look for -lunwind too.

Added: 
    

Modified: 
    compiler-rt/cmake/config-ix.cmake

Removed: 
    


################################################################################
diff  --git a/compiler-rt/cmake/config-ix.cmake b/compiler-rt/cmake/config-ix.cmake
index 09a9b62ce4cd37b..8a5b2792661da9d 100644
--- a/compiler-rt/cmake/config-ix.cmake
+++ b/compiler-rt/cmake/config-ix.cmake
@@ -63,6 +63,12 @@ if (C_SUPPORTS_NODEFAULTLIBS_FLAG)
                         moldname mingwex msvcrt)
     list(APPEND CMAKE_REQUIRED_LIBRARIES ${MINGW_LIBRARIES})
   endif()
+  check_library_exists(unwind _Unwind_RaiseException "" COMPILER_RT_HAS_LIBUNWIND)
+  if (COMPILER_RT_HAS_LIBUNWIND)
+    # If we're omitting default libraries, we might need to manually link in libunwind.
+    # This can affect whether we detect a statically linked libc++ correctly.
+    list(APPEND CMAKE_REQUIRED_LIBRARIES unwind)
+  endif()
 endif ()
 
 # CodeGen options.


        


More information about the llvm-commits mailing list