From 5ffbd2015cd9060046f6a5f64cc2f70eaf17f7d1 Mon Sep 17 00:00:00 2001 From: Janneke Nieuwenhuizen Date: Fri, 22 Nov 2024 15:27:36 +0100 Subject: [PATCH] gnu: glibc/hurd: Add patch for the 64bit Hurd, fixing "raise". This fixes findutil's gnulib-tests's test-sigaction's raise call, by working around an alleged gcc-14.2 optimization bug. See . * gnu/packages/patches/glibc-hurd64-gcc-14.2-tls-bug.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/base.scm (glibc/hurd): Use it. Change-Id: I11e683f521f34dedeb7f739a2545f5d1d866922a --- gnu/local.mk | 1 + gnu/packages/base.scm | 3 +- .../glibc-hurd64-gcc-14.2-tls-bug.patch | 28 +++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/glibc-hurd64-gcc-14.2-tls-bug.patch diff --git a/gnu/local.mk b/gnu/local.mk index d1540afa24..99286e904a 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1441,6 +1441,7 @@ dist_patch_DATA = \ %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-gcc-14.2-tls-bug.patch \ %D%/packages/patches/glibc-hurd64-fault.patch \ %D%/packages/patches/glibc-hurd64-intr-msg-clobber.patch \ %D%/packages/patches/glibc-hurd64-sgms-context.patch \ diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 80e53c2e52..cbce8bd634 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -1598,7 +1598,8 @@ (define-public glibc/hurd (search-patches "glibc-hurd-pthread_setcancelstate.patch" "glibc-hurd64-fault.patch" "glibc-hurd64-intr-msg-clobber.patch" - "glibc-hurd64-sgms-context.patch"))))))) + "glibc-hurd64-sgms-context.patch" + "glibc-hurd64-gcc-14.2-tls-bug.patch"))))))) (define-public glibc/hurd-headers (package/inherit glibc/hurd diff --git a/gnu/packages/patches/glibc-hurd64-gcc-14.2-tls-bug.patch b/gnu/packages/patches/glibc-hurd64-gcc-14.2-tls-bug.patch new file mode 100644 index 0000000000..5823a230fd --- /dev/null +++ b/gnu/packages/patches/glibc-hurd64-gcc-14.2-tls-bug.patch @@ -0,0 +1,28 @@ +From 0b23ab98d25d880ee602af91e62aa39564510cac Mon Sep 17 00:00:00 2001 +From: Janneke Nieuwenhuizen +Date: Fri, 22 Nov 2024 16:26:08 +0100 +Subject: [PATCH] x86_64-hurd: sigreturn: Hack around gcc-14.2 optimization + bug. + +See: . + +* sysdeps/mach/hurd/x86_64/sigreturn.c (__sigreturn2): Add nop. +--- + sysdeps/mach/hurd/x86_64/sigreturn.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sysdeps/mach/hurd/x86_64/sigreturn.c b/sysdeps/mach/hurd/x86_64/sigreturn.c +index 7a0193497d..256cc1268a 100644 +--- a/sysdeps/mach/hurd/x86_64/sigreturn.c ++++ b/sysdeps/mach/hurd/x86_64/sigreturn.c +@@ -45,6 +45,7 @@ __sigreturn2 (struct hurd_sigstate *ss, uintptr_t *usp, + (void) __mach_port_mod_refs (__mach_task_self (), reply_port, + MACH_PORT_RIGHT_RECEIVE, -1); + THREAD_SETMEM (THREAD_SELF, reply_port, sc_reply_port); ++ asm ("nop"); // See . + + asm volatile ( + /* Point the stack to the register dump. */ +-- +2.46.0 +