This adds SIGSEGV_FAULT_STACKPOINTER for the hurd-amd64 case

--- ./lib/sigsegv.c.original    2023-05-05 10:45:54.673751100 +0000
+++ ./lib/sigsegv.c     2023-05-05 10:48:47.903577554 +0000
@@ -351,6 +351,17 @@
    "old esp, if trapped from user".  */
 #  define SIGSEGV_FAULT_STACKPOINTER  scp->sc_uesp
 
+# elif defined __x86_64__
+
+/* scp points to a 'struct sigcontext' (defined in
+   glibc/sysdeps/mach/hurd/x86_64/bits/sigcontext.h).
+   The registers of this struct get pushed on the stack through
+   gnumach/x86_64/i386/locore.S:trapall.  */
+/* Both sc_rsp and sc_ursp appear to have the same value.
+   It appears more reliable to use sc_ursp because it is labelled as
+   "old rsp, if trapped from user".  */
+#  define SIGSEGV_FAULT_STACKPOINTER  scp->sc_ursp
+
 # endif
 
 #endif



Reply via email to