aboutsummaryrefslogtreecommitdiff
path: root/patches/grep
diff options
context:
space:
mode:
authorPasha <pasha@member.fsf.org>2024-02-29 19:30:30 +0000
committerPasha <pasha@member.fsf.org>2024-02-29 19:30:30 +0000
commit84d199451cf33734003c00c043a1480920f5563b (patch)
tree4655f03b3637184bfb363b4e86d376756e85c9e3 /patches/grep
downloadcross-hurd-84d199451cf33734003c00c043a1480920f5563b.tar.gz
cross-hurd-84d199451cf33734003c00c043a1480920f5563b.tar.bz2
initial commit
Diffstat (limited to 'patches/grep')
-rw-r--r--patches/grep/gnulib-hurd-x86_64.patch50
1 files changed, 50 insertions, 0 deletions
diff --git a/patches/grep/gnulib-hurd-x86_64.patch b/patches/grep/gnulib-hurd-x86_64.patch
new file mode 100644
index 0000000..c5ffd1f
--- /dev/null
+++ b/patches/grep/gnulib-hurd-x86_64.patch
@@ -0,0 +1,50 @@
+From acb36717d8dd76b5cb755edc53aa5cea7f24db01 Mon Sep 17 00:00:00 2001
+From: Bruno Haible <bruno@clisp.org>
+Date: Fri, 12 May 2023 21:28:47 +0200
+Subject: sigsegv: Add tentative support for Hurd/x86_64.
+
+Reported by Samuel Thibault <samuel.thibault@ens-lyon.org>.
+
+* lib/sigsegv.c: Update from libsigsegv/src/fault-hurd-i386.h.
+---
+ ChangeLog | 6 ++++++
+ lib/sigsegv.c | 20 +++++++++++++++++---
+ 2 files changed, 23 insertions(+), 3 deletions(-)
+
+diff --git a/lib/sigsegv.c b/lib/sigsegv.c
+index 5e943e4..aadba4e 100644
+--- a/lib/sigsegv.c
++++ b/lib/sigsegv.c
+@@ -365,12 +365,26 @@ int libsigsegv_version = LIBSIGSEGV_VERSION;
+ # define SIGSEGV_FAULT_ADDRESS (unsigned long) code
+ # define SIGSEGV_FAULT_CONTEXT scp
+
+-# if defined __i386__
++# if defined __x86_64__
++/* 64 bit registers */
++
++/* scp points to a 'struct sigcontext' (defined in
++ glibc/sysdeps/mach/hurd/x86_64/bits/sigcontext.h).
++ The registers, at the moment the signal occurred, get pushed on the stack
++ through gnumach/x86_64/locore.S:alltraps and then copied into the struct
++ through glibc/sysdeps/mach/hurd/x86/trampoline.c. */
++/* sc_rsp is unused (not set by gnumach/x86_64/locore.S:alltraps). We need
++ to use sc_ursp. */
++# define SIGSEGV_FAULT_STACKPOINTER scp->sc_ursp
++
++# elif defined __i386__
++/* 32 bit registers */
+
+ /* scp points to a 'struct sigcontext' (defined in
+ glibc/sysdeps/mach/hurd/i386/bits/sigcontext.h).
+- The registers of this struct get pushed on the stack through
+- gnumach/i386/i386/locore.S:trapall. */
++ The registers, at the moment the signal occurred, get pushed on the stack
++ through gnumach/i386/i386/locore.S:alltraps and then copied into the struct
++ through glibc/sysdeps/mach/hurd/x86/trampoline.c. */
+ /* Both sc_esp and sc_uesp appear to have the same value.
+ It appears more reliable to use sc_uesp because it is labelled as
+ "old esp, if trapped from user". */
+--
+cgit v1.1
+