diff options
-rw-r--r-- | gnu/local.mk | 1 | ||||
-rw-r--r-- | gnu/packages/base.scm | 12 | ||||
-rw-r--r-- | gnu/packages/patches/glibc-2.38-hurd-ucontext.patch | 87 |
3 files changed, 5 insertions, 95 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index bc7fe50eb6..eede3ab4db 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1402,7 +1402,6 @@ dist_patch_DATA = \ %D%/packages/patches/glibc-2.37-hurd-clock_t_centiseconds.patch \ %D%/packages/patches/glibc-2.37-hurd-local-clock_gettime_MONOTONIC.patch \ %D%/packages/patches/glibc-2.37-versioned-locpath.patch \ - %D%/packages/patches/glibc-2.38-hurd-ucontext.patch \ %D%/packages/patches/glibc-2.38-ldd-x86_64.patch \ %D%/packages/patches/glibc-hurd-clock_t_centiseconds.patch \ %D%/packages/patches/glibc-hurd-getauxval.patch \ diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 2d8e53faca..68e408494f 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -834,13 +834,13 @@ the store.") ;; version 2.28, GNU/Hurd used a different glibc branch. (package (name "glibc") - (version "2.38") + (version "2.39") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz")) (sha256 (base32 - "1lizxxqbfma5zgmcj0gk5iyk171f2nfvdhbv8rjrkcmjk24rk0pv")) + "09nrwb0ksbah9k35jchd28xxp2hidilqdgz7b8v5f30pz1yd8yzp")) (patches (search-patches "glibc-ldd-powerpc.patch" "glibc-2.38-ldd-x86_64.patch" "glibc-dl-cache.patch" @@ -850,7 +850,6 @@ the store.") "glibc-supported-locales.patch" "glibc-2.37-hurd-clock_t_centiseconds.patch" "glibc-2.37-hurd-local-clock_gettime_MONOTONIC.patch" - "glibc-2.38-hurd-ucontext.patch" "glibc-hurd-mach-print.patch" "glibc-hurd-gettyent.patch" "glibc-hurd-getauxval.patch")))) @@ -915,10 +914,6 @@ the store.") "kernel-headers") "/include") - ;; Libcrypt and <crypt.h> are deprecated in glibc 2.38 and not - ;; built by default. Build it to reduce application breakage. - "--enable-crypt" - ;; This is the default for most architectures as of GNU libc 2.26, ;; but we specify it explicitly for clarity and consistency. See ;; "kernel-features.h" in the GNU libc for details. @@ -1181,6 +1176,9 @@ with the Linux kernel.") "glibc-hurd-gettyent.patch")))) (arguments (substitute-keyword-arguments (package-arguments glibc) + ((#:configure-flags flags #~'()) + #~(cons* "--enable-crypt" + #$flags)) ((#:phases phases) ;; The C.UTF-8 fails to build in glibc 2.35: ;; <https://sourceware.org/bugzilla/show_bug.cgi?id=28861>. diff --git a/gnu/packages/patches/glibc-2.38-hurd-ucontext.patch b/gnu/packages/patches/glibc-2.38-hurd-ucontext.patch deleted file mode 100644 index 03a6132666..0000000000 --- a/gnu/packages/patches/glibc-2.38-hurd-ucontext.patch +++ /dev/null @@ -1,87 +0,0 @@ -commit 29d4591b07a4da53320e949557c6946c62c26bde -Author: Samuel Thibault <samuel.thibault@ens-lyon.org> -Date: Thu Sep 28 00:07:18 2023 +0200 - - hurd: Drop REG_GSFS and REG_ESDS from x86_64's ucontext - - These are useless on x86_64, and __NGREG was actually wrong with them. - -diff --git a/sysdeps/mach/hurd/x86/trampoline.c b/sysdeps/mach/hurd/x86/trampoline.c -index 6318c9528a..bc3f15e1e0 100644 ---- a/sysdeps/mach/hurd/x86/trampoline.c -+++ b/sysdeps/mach/hurd/x86/trampoline.c -@@ -79,8 +79,8 @@ static void fill_ucontext (ucontext_t *uc, const struct sigcontext *sc) - - /* Registers. */ - #ifdef __x86_64__ -- memcpy (&uc->uc_mcontext.gregs[REG_GSFS], &sc->sc_gs, -- (REG_ERR - REG_GSFS) * sizeof (long)); -+ memcpy (&uc->uc_mcontext.gregs[REG_R8], &sc->sc_r8, -+ (REG_ERR - REG_R8) * sizeof (long)); - #else - memcpy (&uc->uc_mcontext.gregs[REG_GS], &sc->sc_gs, - (REG_TRAPNO - REG_GS) * sizeof (int)); -diff --git a/sysdeps/mach/hurd/x86_64/bits/sigcontext.h b/sysdeps/mach/hurd/x86_64/bits/sigcontext.h -index 6396054463..7facc587b8 100644 ---- a/sysdeps/mach/hurd/x86_64/bits/sigcontext.h -+++ b/sysdeps/mach/hurd/x86_64/bits/sigcontext.h -@@ -59,13 +59,7 @@ struct sigcontext - } - trampoline.c knows this, so it must be changed if this changes. */ - --#define sc_i386_thread_state sc_gs /* Beginning of correspondence. */ -- /* Segment registers. */ -- int sc_gs; -- int sc_fs; -- int sc_es; -- int sc_ds; -- -+#define sc_i386_thread_state sc_r8 /* Beginning of correspondence. */ - long sc_r8; - long sc_r9; - long sc_r10; -diff --git a/sysdeps/mach/x86/thread_state.h b/sysdeps/mach/x86/thread_state.h -index 8c419515f9..e237e46cb2 100644 ---- a/sysdeps/mach/x86/thread_state.h -+++ b/sysdeps/mach/x86/thread_state.h -@@ -34,12 +34,13 @@ - #define PC rip - #define SP ursp - #define SYSRETURN rax -+#define MACHINE_THREAD_STATE_FIX_NEW(ts) do { \ -+ asm ("mov %%cs, %w0" : "=q" ((ts)->cs)); \ -+} while(0) - #else - #define PC eip - #define SP uesp - #define SYSRETURN eax --#endif -- - #define MACHINE_THREAD_STATE_FIX_NEW(ts) do { \ - asm ("mov %%cs, %w0" : "=q" ((ts)->cs)); \ - asm ("mov %%ds, %w0" : "=q" ((ts)->ds)); \ -@@ -47,6 +48,7 @@ - asm ("mov %%fs, %w0" : "=q" ((ts)->fs)); \ - asm ("mov %%gs, %w0" : "=q" ((ts)->gs)); \ - } while(0) -+#endif - - struct machine_thread_all_state - { -diff --git a/sysdeps/x86_64/sys/ucontext.h b/sysdeps/x86_64/sys/ucontext.h -index d73a893795..f1b6be77a7 100644 ---- a/sysdeps/x86_64/sys/ucontext.h -+++ b/sysdeps/x86_64/sys/ucontext.h -@@ -47,11 +47,7 @@ typedef greg_t gregset_t[__NGREG]; - /* Number of each register in the `gregset_t' array. */ - enum - { -- REG_GSFS = 0, /* Actually int gs, fs. */ --# define REG_GSFS REG_GSFS -- REG_ESDS, /* Actually int es, ds. */ --# define REG_ESDS REG_ESDS -- REG_R8, -+ REG_R8 = 0, - # define REG_R8 REG_R8 - REG_R9, - # define REG_R9 REG_R9 |