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

Reply via email to