* [PATCH] Add %cs and %ss for AMD64
@ 2004-01-10 12:54 Mark Kettenis
2004-01-11 16:19 ` Andrew Cagney
0 siblings, 1 reply; 3+ messages in thread
From: Mark Kettenis @ 2004-01-10 12:54 UTC (permalink / raw)
To: gdb-patches
There were no objections, so I went ahead. You'll need to recompile
gdbserver on GNU/Linux x86-64 if you want to see the correct
floating-point and SSE registers.
Committed,
Mark
Index: ChangeLog
from Mark Kettenis <kettenis@gnu.org>
* x86-64-tdep.c (amd64_register_info): Add %cs and %ss. Adjust
register numbers in comments.
* x86-64-tdep.h: Update copyright year.
(X86_64_ST0_REGNUM, X86_64_XMM0_REGNUM, X86_64_XMM1_REGNUM):
Adjust for addition of %cs and %ss.
* amd64fbsd-nat.c: Update copyright year.
(reg_offset): Add register offsets for %cs and %ss.
* amd64fbsd-tdep.c: Update copyright year.
(amd64fbsd_r_reg_offset): Add register offsets for %cs and %ss.
(amd64fbsd_sc_reg_offset): Likewise.
* x86-64-linux-nat.c: Update copyright year.
(x86_64_linux_gregset64_reg_offset): Add register offsets for %cs
and %ss.
* amd64nbsd-nat.c: Update copyright year.
(amd64nbsd32_r_reg_offset): Add register offsets for %cs and %ss.
* amd64nbsd-tdep.c: Update copyright year.
(amd64nbsd_r_reg_offset): Add register offsets for %cs and %ss.
* x86-64-linux-tdep.c: Update copyright year.
(user_to_gdb_regmap): Add mapping for %cs and %ss.
(x86_64_linux_sc_reg_offset): Adjust for addition of %cs and %ss.
* regformats/reg-x86-64.dat: Add %cs and %ss.
Index: x86-64-linux-nat.c
===================================================================
RCS file: /cvs/src/src/gdb/x86-64-linux-nat.c,v
retrieving revision 1.30
diff -u -p -r1.30 x86-64-linux-nat.c
--- x86-64-linux-nat.c 28 Sep 2003 13:35:44 -0000 1.30
+++ x86-64-linux-nat.c 10 Jan 2004 12:52:05 -0000
@@ -1,7 +1,6 @@
/* Native-dependent code for GNU/Linux x86-64.
- Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
-
+ Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Jiri Smid, SuSE Labs.
This file is part of GDB.
@@ -67,6 +66,7 @@ static int x86_64_linux_gregset64_reg_of
R12 * 8, R13 * 8,
R14 * 8, R15 * 8, /* ... %r15 */
RIP * 8, EFLAGS * 8, /* %rip, %eflags */
+ CS * 8, SS * 8, /* %cs, %ss */
DS * 8, ES * 8, /* %ds, %es */
FS * 8, GS * 8 /* %fs, %gs */
};
Index: x86-64-linux-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/x86-64-linux-tdep.c,v
retrieving revision 1.24
diff -u -p -r1.24 x86-64-linux-tdep.c
--- x86-64-linux-tdep.c 31 Oct 2003 22:26:29 -0000 1.24
+++ x86-64-linux-tdep.c 10 Jan 2004 12:52:05 -0000
@@ -1,7 +1,6 @@
/* Target-dependent code for GNU/Linux running on x86-64, for GDB.
- Copyright 2001, 2003 Free Software Foundation, Inc.
-
+ Copyright 2001, 2003, 2004 Free Software Foundation, Inc.
Contributed by Jiri Smid, SuSE Labs.
This file is part of GDB.
@@ -69,6 +68,7 @@ static int user_to_gdb_regmap[] =
USER_R8, USER_R9, USER_R10, USER_R11,
USER_R12, USER_R13, USER_R14, USER_R15,
USER_RIP, USER_EFLAGS,
+ USER_CS, USER_SS,
USER_DS, USER_ES, USER_FS, USER_GS
};
@@ -254,13 +254,15 @@ static int x86_64_linux_sc_reg_offset[]
7 * 8, /* %r15 */
16 * 8, /* %rip */
17 * 8, /* %eflags */
- -1, /* %ds */
- -1, /* %es */
- /* FIXME: kettenis/2002030531: The registers %fs and %gs are
+ /* FIXME: kettenis/2002030531: The registers %cs, %fs and %gs are
available in `struct sigcontext'. However, they only occupy two
bytes instead of four, which makes using them here rather
difficult. Leave them out for now. */
+ -1, /* %cs */
+ -1, /* %ss */
+ -1, /* %ds */
+ -1, /* %es */
-1, /* %fs */
-1 /* %gs */
};
Index: x86-64-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/x86-64-tdep.c,v
retrieving revision 1.107
diff -u -p -r1.107 x86-64-tdep.c
--- x86-64-tdep.c 4 Jan 2004 19:07:02 -0000 1.107
+++ x86-64-tdep.c 10 Jan 2004 12:52:06 -0000
@@ -77,12 +77,14 @@ static struct amd64_register_info amd64_
{ "r15", &builtin_type_int64 },
{ "rip", &builtin_type_void_func_ptr },
{ "eflags", &builtin_type_int32 },
+ { "cs", &builtin_type_int32 },
+ { "ss", &builtin_type_int32 },
{ "ds", &builtin_type_int32 },
{ "es", &builtin_type_int32 },
{ "fs", &builtin_type_int32 },
{ "gs", &builtin_type_int32 },
- /* %st0 is register number 22. */
+ /* %st0 is register number 24. */
{ "st0", &builtin_type_i387_ext },
{ "st1", &builtin_type_i387_ext },
{ "st2", &builtin_type_i387_ext },
@@ -100,7 +102,7 @@ static struct amd64_register_info amd64_
{ "fooff", &builtin_type_int32 },
{ "fop", &builtin_type_int32 },
- /* %xmm0 is register number 38. */
+ /* %xmm0 is register number 40. */
{ "xmm0", &builtin_type_v4sf },
{ "xmm1", &builtin_type_v4sf },
{ "xmm2", &builtin_type_v4sf },
Index: x86-64-tdep.h
===================================================================
RCS file: /cvs/src/src/gdb/x86-64-tdep.h,v
retrieving revision 1.21
diff -u -p -r1.21 x86-64-tdep.h
--- x86-64-tdep.h 18 Oct 2003 18:41:22 -0000 1.21
+++ x86-64-tdep.h 10 Jan 2004 12:52:06 -0000
@@ -1,8 +1,6 @@
/* Target-dependent code for the x86-64.
- Copyright 2001, 2003
- Free Software Foundation, Inc.
-
+ Copyright 2001, 2003, 2004 Free Software Foundation, Inc.
Contributed by Jiri Smid, SuSE Labs.
This file is part of GDB.
@@ -40,12 +38,12 @@ struct regcache;
#define X86_64_RSP_REGNUM 7 /* %rsp */
#define X86_64_RIP_REGNUM 16 /* %rip */
#define X86_64_EFLAGS_REGNUM 17 /* %eflags */
-#define X86_64_ST0_REGNUM 22 /* %st0 */
-#define X86_64_XMM0_REGNUM 38 /* %xmm0 */
-#define X86_64_XMM1_REGNUM 39 /* %xmm1 */
+#define X86_64_ST0_REGNUM 24 /* %st0 */
+#define X86_64_XMM0_REGNUM 40 /* %xmm0 */
+#define X86_64_XMM1_REGNUM 41 /* %xmm1 */
/* Number of general purpose registers. */
-#define X86_64_NUM_GREGS 22
+#define X86_64_NUM_GREGS 24
void x86_64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch);
Index: amd64fbsd-nat.c
===================================================================
RCS file: /cvs/src/src/gdb/amd64fbsd-nat.c,v
retrieving revision 1.8
diff -u -p -r1.8 amd64fbsd-nat.c
--- amd64fbsd-nat.c 19 Oct 2003 10:39:49 -0000 1.8
+++ amd64fbsd-nat.c 10 Jan 2004 12:52:06 -0000
@@ -1,6 +1,6 @@
/* Native-dependent code for FreeBSD/amd64.
- Copyright 2003 Free Software Foundation, Inc.
+ Copyright 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -74,6 +74,8 @@ static int reg_offset[] =
REG_OFFSET (r_r15),
REG_OFFSET (r_rip),
REG_OFFSET (r_rflags),
+ REG_OFFSET (r_cs),
+ REG_OFFSET (r_ss),
-1,
-1,
-1,
Index: amd64fbsd-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/amd64fbsd-tdep.c,v
retrieving revision 1.4
diff -u -p -r1.4 amd64fbsd-tdep.c
--- amd64fbsd-tdep.c 5 Nov 2003 22:54:46 -0000 1.4
+++ amd64fbsd-tdep.c 10 Jan 2004 12:52:06 -0000
@@ -1,6 +1,6 @@
/* Target-dependent code for FreeBSD/amd64.
- Copyright 2003 Free Software Foundation, Inc.
+ Copyright 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -58,15 +58,30 @@ amd64fbsd_sigcontext_addr (struct frame_
/* From <machine/reg.h>. */
static int amd64fbsd_r_reg_offset[] =
{
- 14 * 8, 11 * 8, /* %rax, %rbx */
- 13 * 8, 12 * 8, /* %rcx, %rdx */
- 9 * 8, 8 * 8, /* %rsi, %rdi */
- 10 * 8, 20 * 8, /* %rbp, %rsp */
- 7 * 8, 6 * 8, 5 * 8, 4 * 8, /* %r8 ... */
- 3 * 8, 2 * 8, 1 * 8, 0 * 8, /* ... %r15 */
- 17 * 8, 19 * 8, /* %rip, %eflags */
- -1, -1, /* %ds, %es */
- -1, -1 /* %fs, %gs */
+ 14 * 8, /* %rax */
+ 11 * 8, /* %rbx */
+ 13 * 8, /* %rcx */
+ 12 * 8, /* %rdx */
+ 9 * 8, /* %rsi */
+ 8 * 8, /* %rdi */
+ 10 * 8, /* %rbp */
+ 20 * 8, /* %rsp */
+ 7 * 8, /* %r8 ... */
+ 6 * 8,
+ 5 * 8,
+ 4 * 8,
+ 3 * 8,
+ 2 * 8,
+ 1 * 8,
+ 0 * 8, /* ... %r15 */
+ 17 * 8, /* %rip */
+ 19 * 8, /* %eflags */
+ 18 * 8, /* %cs */
+ 21 * 8, /* %ss */
+ -1, /* %ds */
+ -1, /* %es */
+ -1, /* %fs */
+ -1 /* %gs */
};
/* Location of the signal trampoline. */
@@ -74,7 +89,7 @@ CORE_ADDR amd64fbsd_sigtramp_start = 0x7
CORE_ADDR amd64fbsd_sigtramp_end = 0x7fffffffffe0;
/* From <machine/signal.h>. */
-int amd64fbsd_sc_reg_offset[X86_64_NUM_GREGS] =
+int amd64fbsd_sc_reg_offset[] =
{
24 + 6 * 8, /* %rax */
24 + 7 * 8, /* %rbx */
@@ -84,16 +99,18 @@ int amd64fbsd_sc_reg_offset[X86_64_NUM_G
24 + 0 * 8, /* %rdi */
24 + 8 * 8, /* %rbp */
24 + 22 * 8, /* %rsp */
- 24 + 4 * 8, /* %r8 */
- 24 + 5 * 8, /* %r9 */
- 24 + 9 * 8, /* %r10 */
- 24 + 10 * 8, /* %r11 */
- 24 + 11 * 8, /* %r12 */
- 24 + 12 * 8, /* %r13 */
- 24 + 13 * 8, /* %r14 */
- 24 + 14 * 8, /* %r15 */
+ 24 + 4 * 8, /* %r8 ... */
+ 24 + 5 * 8,
+ 24 + 9 * 8,
+ 24 + 10 * 8,
+ 24 + 11 * 8,
+ 24 + 12 * 8,
+ 24 + 13 * 8,
+ 24 + 14 * 8, /* ... %r15 */
24 + 19 * 8, /* %rip */
24 + 21 * 8, /* %eflags */
+ 24 + 20 * 8, /* %cs */
+ 24 + 23 * 8, /* %ss */
-1, /* %ds */
-1, /* %es */
-1, /* %fs */
Index: amd64nbsd-nat.c
===================================================================
RCS file: /cvs/src/src/gdb/amd64nbsd-nat.c,v
retrieving revision 1.1
diff -u -p -r1.1 amd64nbsd-nat.c
--- amd64nbsd-nat.c 18 Oct 2003 18:41:22 -0000 1.1
+++ amd64nbsd-nat.c 10 Jan 2004 12:52:06 -0000
@@ -1,6 +1,6 @@
/* Native-dependent code for NetBSD/amd64.
- Copyright 2003 Free Software Foundation, Inc.
+ Copyright 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -47,8 +47,8 @@ static int amd64nbsd32_r_reg_offset[] =
0 * 8, /* %edi */
21 * 8, /* %eip */
23 * 8, /* %eflags */
- -1, /* %cs */
- -1, /* %ss */
+ 22 * 8, /* %cs */
+ 25 * 8, /* %ss */
18 * 8, /* %ds */
17 * 8, /* %es */
16 * 8, /* %fs */
Index: amd64nbsd-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/amd64nbsd-tdep.c,v
retrieving revision 1.1
diff -u -p -r1.1 amd64nbsd-tdep.c
--- amd64nbsd-tdep.c 18 Oct 2003 18:41:22 -0000 1.1
+++ amd64nbsd-tdep.c 10 Jan 2004 12:52:06 -0000
@@ -1,6 +1,6 @@
/* Target-dependent code for NetBSD/amd64.
- Copyright 2003 Free Software Foundation, Inc.
+ Copyright 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -72,6 +72,8 @@ int amd64nbsd_r_reg_offset[] =
11 * 8, /* ... %r15 */
21 * 8, /* %rip */
23 * 8, /* %eflags */
+ 22 * 8, /* %cs */
+ 25 * 8, /* %ss */
18 * 8, /* %ds */
17 * 8, /* %es */
16 * 8, /* %fs */
Index: regformats/reg-x86-64.dat
===================================================================
RCS file: /cvs/src/src/gdb/regformats/reg-x86-64.dat,v
retrieving revision 1.2
diff -u -p -r1.2 reg-x86-64.dat
--- regformats/reg-x86-64.dat 27 Mar 2002 10:21:29 -0000 1.2
+++ regformats/reg-x86-64.dat 10 Jan 2004 12:52:06 -0000
@@ -18,6 +18,8 @@ expedite:rbp,rsp,rip
64:r15
64:rip
32:eflags
+32:cs
+32:ss
32:ds
32:es
32:fs
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] Add %cs and %ss for AMD64
2004-01-10 12:54 [PATCH] Add %cs and %ss for AMD64 Mark Kettenis
@ 2004-01-11 16:19 ` Andrew Cagney
2004-01-11 17:01 ` Mark Kettenis
0 siblings, 1 reply; 3+ messages in thread
From: Andrew Cagney @ 2004-01-11 16:19 UTC (permalink / raw)
To: Mark Kettenis; +Cc: gdb-patches
> There were no objections, so I went ahead. You'll need to recompile
> gdbserver on GNU/Linux x86-64 if you want to see the correct
> floating-point and SSE registers.
>
> Committed,
Mark, can add something to the NEWS file? It's a user visible change.
Andrew
> Index: ChangeLog
> from Mark Kettenis <kettenis@gnu.org>
>
> * x86-64-tdep.c (amd64_register_info): Add %cs and %ss. Adjust
> register numbers in comments.
> * x86-64-tdep.h: Update copyright year.
> (X86_64_ST0_REGNUM, X86_64_XMM0_REGNUM, X86_64_XMM1_REGNUM):
> Adjust for addition of %cs and %ss.
> * amd64fbsd-nat.c: Update copyright year.
> (reg_offset): Add register offsets for %cs and %ss.
> * amd64fbsd-tdep.c: Update copyright year.
> (amd64fbsd_r_reg_offset): Add register offsets for %cs and %ss.
> (amd64fbsd_sc_reg_offset): Likewise.
> * x86-64-linux-nat.c: Update copyright year.
> (x86_64_linux_gregset64_reg_offset): Add register offsets for %cs
> and %ss.
> * amd64nbsd-nat.c: Update copyright year.
> (amd64nbsd32_r_reg_offset): Add register offsets for %cs and %ss.
> * amd64nbsd-tdep.c: Update copyright year.
> (amd64nbsd_r_reg_offset): Add register offsets for %cs and %ss.
> * x86-64-linux-tdep.c: Update copyright year.
> (user_to_gdb_regmap): Add mapping for %cs and %ss.
> (x86_64_linux_sc_reg_offset): Adjust for addition of %cs and %ss.
> * regformats/reg-x86-64.dat: Add %cs and %ss.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] Add %cs and %ss for AMD64
2004-01-11 16:19 ` Andrew Cagney
@ 2004-01-11 17:01 ` Mark Kettenis
0 siblings, 0 replies; 3+ messages in thread
From: Mark Kettenis @ 2004-01-11 17:01 UTC (permalink / raw)
To: cagney; +Cc: gdb-patches
Date: Sun, 11 Jan 2004 11:19:27 -0500
From: Andrew Cagney <cagney@gnu.org>
Mark, can add something to the NEWS file? It's a user visible change.
Andrew
Done, see the attached patch.
Mark
Index: ChangeLog
from Mark Kettenis <kettenis@gnu.org>
* NEWS: Mention that %cs and %ss have been added to the AMD64
configurations
Index: NEWS
===================================================================
RCS file: /cvs/src/src/gdb/NEWS,v
retrieving revision 1.131
diff -u -p -r1.131 NEWS
--- NEWS 3 Jan 2004 12:21:09 -0000 1.131
+++ NEWS 11 Jan 2004 16:59:33 -0000
@@ -3,6 +3,13 @@
*** Changes since GDB 6.0:
+* Changes in AMD64 configurations
+
+The AMD64 target now includes the %cs and %ss registers. As a result
+the AMD64 remote protocol has changed; this affects the floating-point
+and SSE registers. If you rely on those registers for your debugging,
+you should upgrade gdbserver on the remote side.
+
* Revised SPARC target
The SPARC target has been completely revised, incorporating the
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2004-01-11 17:01 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-01-10 12:54 [PATCH] Add %cs and %ss for AMD64 Mark Kettenis
2004-01-11 16:19 ` Andrew Cagney
2004-01-11 17:01 ` Mark Kettenis
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox