From f12cdda7621789b96b09f9da3ede594deaef6b17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Fri, 15 Sep 2023 11:49:45 +0300 Subject: [PATCH] Reapply [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. This is a reland of #65912. --- compiler-rt/cmake/config-ix.cmake | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/compiler-rt/cmake/config-ix.cmake b/compiler-rt/cmake/config-ix.cmake index 09a9b62ce4cd3..a8e078f1ebc98 100644 --- a/compiler-rt/cmake/config-ix.cmake +++ b/compiler-rt/cmake/config-ix.cmake @@ -63,6 +63,16 @@ if (C_SUPPORTS_NODEFAULTLIBS_FLAG) moldname mingwex msvcrt) list(APPEND CMAKE_REQUIRED_LIBRARIES ${MINGW_LIBRARIES}) endif() + if (NOT TARGET unwind) + # Don't check for a library named unwind, if there's a target with that name within + # the same build. + check_library_exists(unwind _Unwind_GetRegionStart "" 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() endif () # CodeGen options.