public inbox for glibc-cvs@sourceware.org
help / color / mirror / Atom feed
* [glibc] hurd: Drop REG_GSFS and REG_ESDS from x86_64's ucontext
@ 2023-09-27 22:10 Samuel Thibault
0 siblings, 0 replies; only message in thread
From: Samuel Thibault @ 2023-09-27 22:10 UTC (permalink / raw)
To: glibc-cvs
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=29d4591b07a4da53320e949557c6946c62c26bde
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:
---
sysdeps/mach/hurd/x86/trampoline.c | 4 ++--
sysdeps/mach/hurd/x86_64/bits/sigcontext.h | 8 +-------
sysdeps/mach/x86/thread_state.h | 6 ++++--
sysdeps/x86_64/sys/ucontext.h | 6 +-----
4 files changed, 8 insertions(+), 16 deletions(-)
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
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2023-09-27 22:10 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-27 22:10 [glibc] hurd: Drop REG_GSFS and REG_ESDS from x86_64's ucontext Samuel Thibault
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).