On 9/11/21 1:19 PM, Christian Weisgerber wrote:
+/* See the definition of 'struct sigcontext' in
+   openbsd-src/sys/arch/powerpc64/include/signal.h.  */
+
+#  define SIGSEGV_FAULT_STACKPOINTER  scp->sc_sp

Thanks for the heads-up. What you suggested looks safe so I installed the attached patch into Gnulib master on savannah. The "(tiny change)" means the change is so small we needn't worry about copyright papers.

Bruno may eventually have a better patch in mind.

Are similar changes needed for other OpenBSD architectures?
From aa35e17ac6d4749c017eea4b1920903277ce3f69 Mon Sep 17 00:00:00 2001
From: Christian Weisgerber <[email protected]>
Date: Sat, 11 Sep 2021 13:51:13 -0700
Subject: [PATCH] sigsegv: port to OpenBSD 6.8+ powerpc64
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* lib/sigsegv.c (SIGSEGV_FAULT_STACKPOINTER):
Special case for __OpenBSD__ && __powerpc64__, needed due to:
https://github.com/openbsd/src/commit/5e649a8714ba05cf482011b7b7d1e5437b7c17db
which is part of the oldest currently-supported OpenBSD (6.8),
so we needn’t worry about older versions.
---
 ChangeLog     | 9 +++++++++
 lib/sigsegv.c | 9 ++++++++-
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index a7fd469f4..b9795d658 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2021-09-11  Christian Weisgerber  <[email protected]>  (tiny change)
+
+	sigsegv: port to OpenBSD 6.8+ powerpc64
+	* lib/sigsegv.c (SIGSEGV_FAULT_STACKPOINTER):
+	Special case for __OpenBSD__ && __powerpc64__, needed due to:
+	https://github.com/openbsd/src/commit/5e649a8714ba05cf482011b7b7d1e5437b7c17db
+	which is part of the oldest currently-supported OpenBSD (6.8),
+	so we needn’t worry about older versions.
+
 2021-09-09  Pádraig Brady  <[email protected]>
 
 	maintainer-makefile: add 'can' to sc_prohibit_doubled_word
diff --git a/lib/sigsegv.c b/lib/sigsegv.c
index 998c82768..347b42644 100644
--- a/lib/sigsegv.c
+++ b/lib/sigsegv.c
@@ -511,7 +511,14 @@ int libsigsegv_version = LIBSIGSEGV_VERSION;
 
 #  define SIGSEGV_FAULT_STACKPOINTER  scp->sc_regs[29]
 
-# elif defined __powerpc__ || defined __powerpc64__
+# elif defined __powerpc64__
+
+/* See the definition of 'struct sigcontext' in
+   openbsd-src/sys/arch/powerpc64/include/signal.h.  */
+
+#  define SIGSEGV_FAULT_STACKPOINTER  scp->sc_sp
+
+# elif defined __powerpc__
 
 /* See the definition of 'struct sigcontext' and 'struct trapframe' in
    openbsd-src/sys/arch/powerpc/include/signal.h.  */
-- 
2.30.2

Reply via email to