From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <guix-patches-bounces+larch=yhetil.org@gnu.org>
Received: from mp0.migadu.com ([2001:41d0:303:e224::])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))
	by ms13.migadu.com with LMTPS
	id sBbIJdg3PGc9pQAAqHPOHw:P1
	(envelope-from <guix-patches-bounces+larch=yhetil.org@gnu.org>)
	for <larch@yhetil.org>; Tue, 19 Nov 2024 07:01:44 +0000
Received: from aspmx1.migadu.com ([2001:41d0:303:e224::])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))
	by mp0.migadu.com with LMTPS
	id sBbIJdg3PGc9pQAAqHPOHw
	(envelope-from <guix-patches-bounces+larch=yhetil.org@gnu.org>)
	for <larch@yhetil.org>; Tue, 19 Nov 2024 08:01:44 +0100
X-Envelope-To: larch@yhetil.org
Authentication-Results: aspmx1.migadu.com;
	dkim=pass header.d=debbugs.gnu.org header.s=debbugs-gnu-org header.b=PZGgzg5+;
	dkim=fail ("headers rsa verify failed") header.d=gnu.org header.s=fencepost-gnu-org header.b=PetO24wt;
	dmarc=pass (policy=none) header.from=gnu.org;
	spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org"
ARC-Seal: i=1; s=key1; d=yhetil.org; t=1731999704; a=rsa-sha256; cv=none;
	b=YN6z8ZNhlghRMumULecUMp9oFqWKc4wacPam2Vo5PpUJMd8Sr+TeI6nvdLQsheEfvxYcq9
	Y8pIX2KB0m/EtP1w4kcbcUwJcGzZcRO7UirP/447TWkVf0/KEWDPExVrh6Xpn74Y0PU3sp
	Bpe/df2q18kjJc+9zEMrD84HFbEswBvZ38NfCT7FMjRm/AMkCdzrFGTlmQpU+ZYHxs0M2E
	pPEz4Vk3Oh9QPdkbxOSKtL4avCuH6AwLxk3K5h9w9MMJA7q71CW2LdxjW5YlQJeSEAtyNV
	39Bwbf52mXdd+d5n52lYd99FmywWbixAUMueVZrki9JuQFdVbGmR6Ocguhfu7g==
ARC-Authentication-Results: i=1;
	aspmx1.migadu.com;
	dkim=pass header.d=debbugs.gnu.org header.s=debbugs-gnu-org header.b=PZGgzg5+;
	dkim=fail ("headers rsa verify failed") header.d=gnu.org header.s=fencepost-gnu-org header.b=PetO24wt;
	dmarc=pass (policy=none) header.from=gnu.org;
	spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org"
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org;
	s=key1; t=1731999704;
	h=from:from:sender:sender:reply-to:subject:subject:date:date:
	 message-id:message-id:to:to:cc:cc:mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:resent-cc:
	 resent-from:resent-sender:resent-message-id:in-reply-to:in-reply-to:
	 references:references:list-id:list-help:list-unsubscribe:
	 list-subscribe:list-post:dkim-signature;
	bh=WT4b+T35rkO17WBj2DteiflhVb8/afw7UIcDzgEmjVE=;
	b=SRrHEyrW/i5DPDRu3W1QFTgo8T/apY6OVroKMum36D0gZwfgywbhSoPHZZTfE713GOKljv
	ckHRC8DskBmOlk0VOuXHvsAeNAl0gFchuntLzVZ1v4jb8NP76YQiR7tn+Vrnfa9/i8egHE
	6mXtuls3pqRKXY6/on0305mgtkhF88ZZUxIor7v7rQFhO5BxMGgut7ziilDPvcDwSUqgxW
	HOFuhpQWEGq/Q+9afvgCE2GUxfh9c09AnGc6B1RO4VJY/5iu9nlShhLfzguTC1mBVSpLt2
	tBGbbvt0ZdM5zIfpvZf23P1cVMINJwdtZgiYKa13jWz4VrollSgQGsZiGhR17Q==
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by aspmx1.migadu.com (Postfix) with ESMTPS id 44D7E898B7
	for <larch@yhetil.org>; Tue, 19 Nov 2024 08:01:44 +0100 (CET)
Received: from localhost ([::1] helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <guix-patches-bounces@gnu.org>)
	id 1tDICg-0008Ml-JQ; Tue, 19 Nov 2024 01:59:14 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <Debian-debbugs@debbugs.gnu.org>)
 id 1tDICf-0008M5-Gh
 for guix-patches@gnu.org; Tue, 19 Nov 2024 01:59:13 -0500
Received: from debbugs.gnu.org ([2001:470:142:5::43])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <Debian-debbugs@debbugs.gnu.org>)
 id 1tDICf-0004Jg-6z; Tue, 19 Nov 2024 01:59:13 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
 d=debbugs.gnu.org; s=debbugs-gnu-org; 
 h=MIME-Version:References:In-Reply-To:Date:From:To:Subject;
 bh=WT4b+T35rkO17WBj2DteiflhVb8/afw7UIcDzgEmjVE=; 
 b=PZGgzg5+ajnmYKL2IKsxXp5//OHDG2hkRngc2tzu4lqzCJ12BXy8ZWTcKTvp+gAFUNnDHHk6jJ5eiJV3gSqhBdM860OWtVFIsb36EmZG5AldY0vgiK1LxIIFGVgJuFjd75CIOVl8rhl6hRUSno0MQRlN/f/safCep32c3ALIN6yMZmzIuJAFudDVXEQF9isx99uHAWsfW8ZaGmcnDM06Up4uhrB6wsKQljGZMjkkUtjt+MmAk7rKJ7jQoV6235D5U8Z2Pdg3NX6RAAxcR3aXrYFMn6Kd7MtWZl4j/bLnPMtVNn/grYTiqdhYuxUwNIGOF3v7uFpGUVKHGz3QXW0Yiw==;
Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2)
 (envelope-from <Debian-debbugs@debbugs.gnu.org>)
 id 1tDICe-0005H2-V8; Tue, 19 Nov 2024 01:59:12 -0500
X-Loop: help-debbugs@gnu.org
Subject: [bug#74290] [PATCH v3 12/51] gnu: glibc/hurd: Add patches for the
 64bit Hurd.
Resent-From: Janneke Nieuwenhuizen <janneke@gnu.org>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces@debbugs.gnu.org>
Resent-CC: andreas@enge.fr, ludo@gnu.org, guix-patches@gnu.org
Resent-Date: Tue, 19 Nov 2024 06:59:12 +0000
Resent-Message-ID: <handler.74290.B74290.173199950719779@debbugs.gnu.org>
Resent-Sender: help-debbugs@gnu.org
X-GNU-PR-Message: followup 74290
X-GNU-PR-Package: guix-patches
X-GNU-PR-Keywords: patch
To: 74290@debbugs.gnu.org
Cc: Andreas Enge <andreas@enge.fr>,
 Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@gnu.org>
X-Debbugs-Original-Xcc: Andreas Enge <andreas@enge.fr>,
 Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@gnu.org>
Received: via spool by 74290-submit@debbugs.gnu.org id=B74290.173199950719779
 (code B ref 74290); Tue, 19 Nov 2024 06:59:12 +0000
Received: (at 74290) by debbugs.gnu.org; 19 Nov 2024 06:58:27 +0000
Received: from localhost ([127.0.0.1]:40471 helo=debbugs.gnu.org)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <debbugs-submit-bounces@debbugs.gnu.org>)
 id 1tDIBu-00058o-9P
 for submit@debbugs.gnu.org; Tue, 19 Nov 2024 01:58:27 -0500
Received: from eggs.gnu.org ([209.51.188.92]:48500)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <janneke@gnu.org>) id 1tDIBl-00056O-BI
 for 74290@debbugs.gnu.org; Tue, 19 Nov 2024 01:58:18 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <janneke@gnu.org>)
 id 1tDI9Z-0003xo-Di; Tue, 19 Nov 2024 01:56:01 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-Version:References:In-Reply-To:Date:Subject:To:
 From; bh=WT4b+T35rkO17WBj2DteiflhVb8/afw7UIcDzgEmjVE=; b=PetO24wt2lKSr/a+8q/K
 vFxRhNTay+NvXF6Fu/MQWIo0lxgG82Sps8dDmJpPrP8g6MeN/2uDGhACaSOC+3ufp+UDxxQm/d/wi
 OVzyHLFLncUNIUCuhHer0OLGRJd18vtSEcCnmhIhsZ3LfkdzWHqybmT8m81+yA4ZMqhAVByAEUrqj
 l9MmgXuif/Gx9AQ0L37/+vRH7Vfkf/jkRu8PrEj2oDGDIFIlhjodhqq76ubB4QYRhZNBTEGTzh2Ht
 GFYtcG4jJ0PnAF6vbJd9bxNk7/hHZwYvcdihybRrOKdqhj4Ep/W/sJcTlplkF3awJ0ybwcyfTr4Y+
 Gogvo0kcn6HNqw==;
From: Janneke Nieuwenhuizen <janneke@gnu.org>
Date: Tue, 19 Nov 2024 07:54:42 +0100
Message-ID: <0f1b235cb863ff70acda30d9e11d45770e2dade8.1731999203.git.janneke@gnu.org>
X-Mailer: git-send-email 2.46.0
In-Reply-To: <cover.1731999202.git.janneke@gnu.org>
References: <cover.1731999202.git.janneke@gnu.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-BeenThere: debbugs-submit@debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
X-BeenThere: guix-patches@gnu.org
List-Id: <guix-patches.gnu.org>
List-Unsubscribe: <https://lists.gnu.org/mailman/options/guix-patches>,
 <mailto:guix-patches-request@gnu.org?subject=unsubscribe>
List-Archive: <https://lists.gnu.org/archive/html/guix-patches>
List-Post: <mailto:guix-patches@gnu.org>
List-Help: <mailto:guix-patches-request@gnu.org?subject=help>
List-Subscribe: <https://lists.gnu.org/mailman/listinfo/guix-patches>,
 <mailto:guix-patches-request@gnu.org?subject=subscribe>
Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org
Sender: guix-patches-bounces+larch=yhetil.org@gnu.org
X-Migadu-Flow: FLOW_IN
X-Migadu-Country: US
X-Migadu-Spam-Score: -0.02
X-Spam-Score: -0.02
X-Migadu-Queue-Id: 44D7E898B7
X-Migadu-Scanner: mx12.migadu.com
X-TUID: 4at/4pa3HMfL

These patches fix:

  * Statically linked tar to hang/segfault upon issuing the "--mtime=@1"
  warning; this is also applicable for the 32bit Hurd using glibc-2.39!

See <https://lists.gnu.org/archive/html/bug-hurd/2024-11/msg00115.html>.

  * Shell replacement problems for the 64bit Hurd.

See <https://lists.debian.org/debian-hurd/2024/07/msg00063.html>.

* gnu/packages/patches/glibc-hurd-pthread_setcancelstate.patch,
gnu/packages/patches/glibc-hurd64-fault.patch,
gnu/packages/patches/glibc-hurd64-intr-msg-clobber.patch: New files.
* gnu/local.mk (dist_patch_DATA): Register them.
* gnu/packages/base.scm (glibc/hurd): Use them.

Change-Id: I9ee65983876cd22ad1dc01aabb41a34074631599
---
 gnu/local.mk                                  |  3 +
 gnu/packages/base.scm                         | 11 ++-
 .../glibc-hurd-pthread_setcancelstate.patch   | 92 +++++++++++++++++++
 gnu/packages/patches/glibc-hurd64-fault.patch | 32 +++++++
 .../glibc-hurd64-intr-msg-clobber.patch       | 62 +++++++++++++
 5 files changed, 199 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/glibc-hurd-pthread_setcancelstate.patch
 create mode 100644 gnu/packages/patches/glibc-hurd64-fault.patch
 create mode 100644 gnu/packages/patches/glibc-hurd64-intr-msg-clobber.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 9a775cc160..eb50df6e13 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1439,7 +1439,10 @@ dist_patch_DATA =						\
   %D%/packages/patches/glibc-hurd-getauxval.patch		\
   %D%/packages/patches/glibc-hurd-gettyent.patch		\
   %D%/packages/patches/glibc-hurd-mach-print.patch		\
+  %D%/packages/patches/glibc-hurd-pthread_setcancelstate.patch	\
   %D%/packages/patches/glibc-hurd-signal-sa-siginfo.patch	\
+  %D%/packages/patches/glibc-hurd64-fault.patch			\
+  %D%/packages/patches/glibc-hurd64-intr-msg-clobber.patch	\
   %D%/packages/patches/glibc-ldd-powerpc.patch			\
   %D%/packages/patches/glibc-ldd-x86_64.patch			\
   %D%/packages/patches/glibc-locales.patch			\
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 83f8c0d9e9..bab1f258c6 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -1588,7 +1588,16 @@ (define-public which
 command.")
     (license gpl3+))) ; some files are under GPLv2+
 
-(define-public glibc/hurd glibc)
+(define-public glibc/hurd
+  (package/inherit glibc
+    (source
+     (origin
+       (inherit (package-source glibc))
+       (patches
+        (append (origin-patches (package-source glibc))
+                (search-patches "glibc-hurd-pthread_setcancelstate.patch"
+                                "glibc-hurd64-fault.patch"
+                                "glibc-hurd64-intr-msg-clobber.patch")))))))
 
 (define-public glibc/hurd-headers
   (package/inherit glibc/hurd
diff --git a/gnu/packages/patches/glibc-hurd-pthread_setcancelstate.patch b/gnu/packages/patches/glibc-hurd-pthread_setcancelstate.patch
new file mode 100644
index 0000000000..1d7c81b98e
--- /dev/null
+++ b/gnu/packages/patches/glibc-hurd-pthread_setcancelstate.patch
@@ -0,0 +1,92 @@
+Upstream-status: Taken from <https://salsa.debian.org/glibc-team/glibc/-/blob/25a0a47767fe7dc5151eb36afaade17218728efe/debian/patches/hurd-i386/local-static_pthread_setcancelstate.diff>.
+
+This is needed for the 64bit Hurd statically linked tar non to hang when
+issuing a warning.
+
+since the move of libpthread functions to libc, glibc dropped the use
+of __libc_ptf_call. But htl hasn't made the move yet, so we have to use
+__libc_ptf_call there for now.
+
+Index: glibc-2.36/misc/error.c
+===================================================================
+--- glibc-2.36.orig/misc/error.c
++++ glibc-2.36/misc/error.c
+@@ -240,7 +240,8 @@ __error_internal (int status, int errnum
+   /* We do not want this call to be cut short by a thread
+      cancellation.  Therefore disable cancellation for now.  */
+   int state = PTHREAD_CANCEL_ENABLE;
+-  __pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);
++  __libc_ptf_call (__pthread_setcancelstate,
++		   (PTHREAD_CANCEL_DISABLE, &state), 0);
+ #endif
+ 
+   flush_stdout ();
+@@ -262,7 +263,7 @@ __error_internal (int status, int errnum
+ 
+ #ifdef _LIBC
+   _IO_funlockfile (stderr);
+-  __pthread_setcancelstate (state, NULL);
++  __libc_ptf_call (__pthread_setcancelstate, (state, NULL), 0);
+ #endif
+ }
+ 
+@@ -306,7 +307,9 @@ __error_at_line_internal (int status, in
+   /* We do not want this call to be cut short by a thread
+      cancellation.  Therefore disable cancellation for now.  */
+   int state = PTHREAD_CANCEL_ENABLE;
+-  __pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);
++  __libc_ptf_call (__pthread_setcancelstate,
++		   (PTHREAD_CANCEL_DISABLE, &state),
++		   0);
+ #endif
+ 
+   flush_stdout ();
+@@ -336,7 +339,7 @@ __error_at_line_internal (int status, in
+ 
+ #ifdef _LIBC
+   _IO_funlockfile (stderr);
+-  __pthread_setcancelstate (state, NULL);
++  __libc_ptf_call (__pthread_setcancelstate, (state, NULL), 0);
+ #endif
+ }
+ 
+Index: glibc-2.36/libio/iopopen.c
+===================================================================
+--- glibc-2.36.orig/libio/iopopen.c
++++ glibc-2.36/libio/iopopen.c
+@@ -281,9 +281,10 @@ _IO_new_proc_close (FILE *fp)
+   do
+     {
+       int state;
+-      __pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);
++      __libc_ptf_call (__pthread_setcancelstate,
++		       (PTHREAD_CANCEL_DISABLE, &state), 0);
+       wait_pid = __waitpid (((_IO_proc_file *) fp)->pid, &wstatus, 0);
+-      __pthread_setcancelstate (state, NULL);
++      __libc_ptf_call (__pthread_setcancelstate, (state, NULL), 0);
+     }
+   while (wait_pid == -1 && errno == EINTR);
+   if (wait_pid == -1)
+Index: glibc-2.36/stdlib/fmtmsg.c
+===================================================================
+--- glibc-2.36.orig/stdlib/fmtmsg.c
++++ glibc-2.36/stdlib/fmtmsg.c
+@@ -124,7 +124,8 @@ fmtmsg (long int classification, const c
+   /* We do not want this call to be cut short by a thread
+      cancellation.  Therefore disable cancellation for now.  */
+   int state = PTHREAD_CANCEL_ENABLE;
+-  __pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);
++  __libc_ptf_call (__pthread_setcancelstate,
++		   (PTHREAD_CANCEL_DISABLE, &state), 0);
+ 
+   __libc_lock_lock (lock);
+ 
+@@ -193,7 +194,7 @@ fmtmsg (long int classification, const c
+ 
+   __libc_lock_unlock (lock);
+ 
+-  __pthread_setcancelstate (state, NULL);
++  __libc_ptf_call (__pthread_setcancelstate, (state, NULL), 0);
+ 
+   return result;
+ }
diff --git a/gnu/packages/patches/glibc-hurd64-fault.patch b/gnu/packages/patches/glibc-hurd64-fault.patch
new file mode 100644
index 0000000000..24980e8c2a
--- /dev/null
+++ b/gnu/packages/patches/glibc-hurd64-fault.patch
@@ -0,0 +1,32 @@
+Upstream-status: Taken from: <https://salsa.debian.org/glibc-team/glibc/-/blob/c36c87acb1a35d6e06db6cef1e28cf2f405e1a9e/debian/patches/hurd-i386/git-fault-64bit.diff>.
+
+See <https://lists.gnu.org/archive/html/bug-hurd/2024-11/msg00115.html>.
+
+commit 11ad033e1c09c8b8e7bbaa72420f41ab8bcf0f63
+Author: Flavio Cruz <flaviocruz@gmail.com>
+Date:   Tue Jul 30 00:51:20 2024 -0400
+
+    x86_64 hurd: ensure we have a large enough buffer to receive exception_raise requests.
+    
+    Message-ID: <gtxd6s4s7fi7hdrlb7zayq3akij7x6jqawwq3zfl3v4nqspulo@euucuzeonrl6>
+
+diff --git a/hurd/hurdfault.c b/hurd/hurdfault.c
+index 5110c6030f..1fe973f54d 100644
+--- a/hurd/hurdfault.c
++++ b/hurd/hurdfault.c
+@@ -121,7 +121,14 @@ faulted (void)
+   struct
+     {
+       mach_msg_header_t head;
+-      char buf[64];
++        /* This is the size of the exception_raise request
++         * including mach_msg_header_t.
++         * See generated code in faultexc_server.c.  */
++#ifdef __LP64__
++        char buf[112];
++#else
++        char buf[64];
++#endif
+     } request;
+   mig_reply_header_t reply;
+   extern int _hurdsig_fault_exc_server (mach_msg_header_t *,
diff --git a/gnu/packages/patches/glibc-hurd64-intr-msg-clobber.patch b/gnu/packages/patches/glibc-hurd64-intr-msg-clobber.patch
new file mode 100644
index 0000000000..600f89a711
--- /dev/null
+++ b/gnu/packages/patches/glibc-hurd64-intr-msg-clobber.patch
@@ -0,0 +1,62 @@
+Upstream-status: Taken from <https://salsa.debian.org/glibc-team/glibc/-/blob/c36c87acb1a35d6e06db6cef1e28cf2f405e1a9e/debian/patches/hurd-i386/git-intr-msg-clobber.diff>.
+
+See <https://lists.gnu.org/archive/html/bug-hurd/2024-11/msg00115.html>,
+and <https://lists.debian.org/debian-hurd/2024/07/msg00063.html>.
+
+Commited for 2.40
+
+commit c8b4ce0b368115714bd4cce131e1683759471099
+Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
+Date:   Sat Jul 13 17:00:55 2024 +0200
+
+    hurd: Fix restoring message to be retried
+    
+    save_data stores the start of the original message to be retried,
+    overwritten by the EINTR reply. In 64b builds the overwrite is however
+    rounded up to the 64b pointer size, so we have to save more than just
+    the 32b err.
+    
+    Thanks a lot to Luca Dariz for the investigation!
+
+diff --git a/hurd/intr-msg.c b/hurd/intr-msg.c
+index 2c2e7dc463..424c1fc700 100644
+--- a/hurd/intr-msg.c
++++ b/hurd/intr-msg.c
+@@ -42,7 +42,10 @@ _hurd_intr_rpc_mach_msg (mach_msg_header_t *msg,
+   struct clobber
+   {
+     mach_msg_type_t type;
+-    error_t err;
++    union {
++      error_t err;
++      uintptr_t align;
++    };
+   };
+   union msg
+   {
+
+Taken from: <https://salsa.debian.org/glibc-team/glibc/-/blob/027f94215a633cbf53794d4b48675fde36706e35/debian/patches/hurd-i386/local-intr-msg-clobber.diff>
+
+Force putting save_data on the stack rather than in SSE register
+
+The signal management does not yet properly save SSE state, so that save_data
+would get overwritten by signal handlers, notably leading to `` shell
+replacement getting empty content because then the io_read RPC retry gets an
+MIG_BAD_ARGUMENTS error.
+
+XXX: This is only temporary to fix the common shll replacement issue, and is
+waiting for proper SSE state restoration.
+
+Index: glibc-2.38/hurd/intr-msg.c
+===================================================================
+--- glibc-2.38.orig/hurd/intr-msg.c
++++ glibc-2.38/hurd/intr-msg.c
+@@ -79,7 +79,7 @@ _hurd_intr_rpc_mach_msg (mach_msg_header
+   mach_msg_bits_t msgh_bits;
+   mach_port_t remote_port;
+   mach_msg_id_t msgid;
+-  struct clobber save_data;
++  volatile struct clobber save_data;
+ 
+   if ((option & (MACH_SEND_MSG|MACH_RCV_MSG)) != (MACH_SEND_MSG|MACH_RCV_MSG)
+       || _hurd_msgport_thread == MACH_PORT_NULL)
-- 
2.46.0