diff --git a/debian/changelog b/debian/changelog index a2a6aca8..3409f6c3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +llvm-toolchain-16 (1:16.0.6-22) UNRELEASED; urgency=medium + + [ Zixing Liu ] + * d/p/fix-unwind-detection-logic.patch: use an upstream patch to fix + libunwind detection logic when compiler-rt is disabled. + + -- Gianfranco Costamagna Wed, 06 Mar 2024 08:38:53 +0100 + llvm-toolchain-16 (1:16.0.6-21) unstable; urgency=medium [ Steve Langasek ] 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 52c1ee02..917f6e85 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