From dade3fdc3f9075d6236f9d2109c3066463fd14eb Mon Sep 17 00:00:00 2001 From: GNU Libc Maintainers Date: Sun, 13 Apr 2025 21:40:49 +0200 Subject: [PATCH] local-intr-msg-clobber 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. Gbp-Pq: Topic hurd-i386 Gbp-Pq: Name local-intr-msg-clobber.diff --- hurd/intr-msg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hurd/intr-msg.c b/hurd/intr-msg.c index 1c2fe3f20..4db9be222 100644 --- a/hurd/intr-msg.c +++ b/hurd/intr-msg.c @@ -67,7 +67,7 @@ _hurd_intr_rpc_mach_msg (mach_msg_header_t *msg, 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.30.2