From 1530cbcd04b80cfc42a0a4f0d96cea67cdb47fbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Mon, 11 Sep 2023 00:22:55 +0300 Subject: [PATCH] [compiler-rt] Check for and use -lunwind when linking with -nodefaultlibs 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. --- compiler-rt/cmake/config-ix.cmake | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/compiler-rt/cmake/config-ix.cmake b/compiler-rt/cmake/config-ix.cmake index 09a9b62ce4cd3..8a5b2792661da 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.