diff --git a/debian/changelog b/debian/changelog index 4d578922..e5f9b334 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +llvm-toolchain-17 (1:17.0.6-9) UNRELEASED; urgency=medium + + * d/p/fix-unwind-detection-logic.patch: use an upstream patch to fix + libunwind detection logic when compiler-rt is disabled. + + -- Zixing Liu Tue, 05 Mar 2024 21:17:18 -0700 + llvm-toolchain-17 (1:17.0.6-8) UNRELEASED; urgency=medium * Make libclang-common-17-dev architecture dependent. diff --git a/debian/patches/fix-unwind-detection-logic.patch b/debian/patches/fix-unwind-detection-logic.patch new file mode 100644 index 00000000..667432c3 --- /dev/null +++ b/debian/patches/fix-unwind-detection-logic.patch @@ -0,0 +1,39 @@ +From 7c5e4e5fa3a948fc662be3a6bf057021d32f72e6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Martin=20Storsj=C3=B6?= +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. diff --git a/debian/patches/series b/debian/patches/series index b3b2ddc0..b7dcb850 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -135,7 +135,7 @@ protobuf_3.21.patch # compiler-rt compiler-rt/compilerrt-builtins-arch-fix-armhf.diff compiler-rt/compilerrt-build-scudo-standalone-option.diff - +fix-unwind-detection-logic.patch # wasm patches wasm/wasm-ld-path.diff