mirror of
				https://git.proxmox.com/git/llvm-toolchain
				synced 2025-11-04 14:44:34 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			40 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 7c5e4e5fa3a948fc662be3a6bf057021d32f72e6 Mon Sep 17 00:00:00 2001
 | 
						|
From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st>
 | 
						|
Date: Thu, 5 Oct 2023 11:41:11 +0300
 | 
						|
Subject: [PATCH] Reapply [compiler-rt] Check for and use -lunwind when linking
 | 
						|
 with -nodefaultlibs (#66584)
 | 
						|
 | 
						|
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 09a9b62ce4cd37..a8e078f1ebc988 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.
 |