Package: release.debian.org Severity: normal Tags: buster User: release.debian....@packages.debian.org Usertags: pu
This unbreaks libunwind on big endian mips, and disables the C++ exception support on architectures where it was broken (the latter was most visible on arm64).
diff -Nru libunwind-1.2.1/debian/changelog libunwind-1.2.1/debian/changelog --- libunwind-1.2.1/debian/changelog 2019-03-01 20:03:05.000000000 +0200 +++ libunwind-1.2.1/debian/changelog 2020-07-23 22:00:53.000000000 +0300 @@ -1,3 +1,19 @@ +libunwind (1.2.1-10~deb10u1) buster; urgency=medium + + * Rebuild on buster. + + -- Adrian Bunk <b...@debian.org> Thu, 23 Jul 2020 22:00:53 +0300 + +libunwind (1.2.1-10) unstable; urgency=high + + * Manually enable C++ exception support only on i386 and amd64, + it is known broken on several other architectures. + Thanks to Bernhard Übelacker. (Closes: #923962) + * Backport upstream fix for segfaults on mips, + thanks to Guillaume Tucker. (Closes: #932725) + + -- Adrian Bunk <b...@debian.org> Wed, 22 Jul 2020 09:31:48 +0300 + libunwind (1.2.1-9) unstable; urgency=medium * Backport some fixes wanted by julia: diff -Nru libunwind-1.2.1/debian/patches/0001-tdep_uc_addr-use-4-offset-for-UNW_MIPS_PC-on-MIPS-be.patch libunwind-1.2.1/debian/patches/0001-tdep_uc_addr-use-4-offset-for-UNW_MIPS_PC-on-MIPS-be.patch --- libunwind-1.2.1/debian/patches/0001-tdep_uc_addr-use-4-offset-for-UNW_MIPS_PC-on-MIPS-be.patch 1970-01-01 02:00:00.000000000 +0200 +++ libunwind-1.2.1/debian/patches/0001-tdep_uc_addr-use-4-offset-for-UNW_MIPS_PC-on-MIPS-be.patch 2020-07-21 21:37:18.000000000 +0300 @@ -0,0 +1,29 @@ +From fd44f596b2dad70acdc81cc76983585f888e045d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=9A=D0=BE=D1=80=D0=BE=D0=BB=D0=B5=D0=B2=20=D0=A1=D0=B5?= + =?UTF-8?q?=D1=80=D0=B3=D0=B5=D0=B9?= <korolev.ser...@gmail.com> +Date: Wed, 22 Jun 2016 19:53:02 +0300 +Subject: tdep_uc_addr: use +4 offset for UNW_MIPS_PC on MIPS (be) + +According to mcontext_t definition its "pc" field +is also 64 bit wide and thus requires 4 byte offset +on MIPS32 (be). +--- + src/mips/Ginit.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/mips/Ginit.c b/src/mips/Ginit.c +index 8290c408..83b100fb 100644 +--- a/src/mips/Ginit.c ++++ b/src/mips/Ginit.c +@@ -59,7 +59,7 @@ tdep_uc_addr (ucontext_t *uc, int reg) + { + char *addr = uc_addr (uc, reg); + +- if (reg >= UNW_MIPS_R0 && reg <= UNW_MIPS_R31 ++ if (((reg >= UNW_MIPS_R0 && reg <= UNW_MIPS_R31) || reg == UNW_MIPS_PC) + && tdep_big_endian (unw_local_addr_space) + && unw_local_addr_space->abi == UNW_MIPS_ABI_O32) + addr += 4; +-- +2.20.1 + diff -Nru libunwind-1.2.1/debian/patches/series libunwind-1.2.1/debian/patches/series --- libunwind-1.2.1/debian/patches/series 2019-03-01 20:03:05.000000000 +0200 +++ libunwind-1.2.1/debian/patches/series 2020-07-21 21:37:27.000000000 +0300 @@ -9,6 +9,7 @@ 0001-arm-Handle-non-signal-frame-unwind-info-lookup-in-AR.patch 0001-dwarf-Allow-DWARF-version-both-3-and-4-56.patch 0001-aarch64-Use-__asm__-instead-of-asm-89.patch +0001-tdep_uc_addr-use-4-offset-for-UNW_MIPS_PC-on-MIPS-be.patch # ia64 libunwind-1.2-coredump-regs.patch diff -Nru libunwind-1.2.1/debian/rules libunwind-1.2.1/debian/rules --- libunwind-1.2.1/debian/rules 2018-04-10 20:03:57.000000000 +0300 +++ libunwind-1.2.1/debian/rules 2020-07-22 09:31:48.000000000 +0300 @@ -6,6 +6,10 @@ export DEB_BUILD_MAINT_OPTIONS = hardening=-all,+format +ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386)) + CXX_EXCEPTIONS=--enable-cxx-exceptions +endif + %: dh $@ @@ -20,7 +24,7 @@ sed 's/@DEB_HOST_MULTIARCH@/$(DEB_HOST_MULTIARCH)/g' $< > $@ override_dh_auto_configure: - dh_auto_configure -- --with-pic --enable-cxx-exceptions --includedir=\$${prefix}/include/$(DEB_HOST_MULTIARCH) + dh_auto_configure -- --with-pic $(CXX_EXCEPTIONS) --includedir=\$${prefix}/include/$(DEB_HOST_MULTIARCH) override_dh_install: dh_install