From: Mark Kettenis <kettenis@gnu.org>
Date: Sat, 10 Jan 2004 12:52:41 +0000 (+0000)
Subject: * x86-64-tdep.c (amd64_register_info): Add %cs and %ss.  Adjust
X-Git-Url: https://repo.jachan.dev/binutils.git/commitdiff_plain/af2336475251b043c1dea6cdc557ee01dde2948b

* 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.
---

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b5d87e2383..cba018fedd 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,27 @@
 2004-01-10  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.
+
 	* blockframe.c (inside_entry_func): Reformat.  Introduce new local
 	variables to prevent long lines.  Update comments to reflect
 	reality.
diff --git a/gdb/amd64fbsd-nat.c b/gdb/amd64fbsd-nat.c
index 2354fa361b..edab8b5670 100644
--- a/gdb/amd64fbsd-nat.c
+++ b/gdb/amd64fbsd-nat.c
@@ -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,
diff --git a/gdb/amd64fbsd-tdep.c b/gdb/amd64fbsd-tdep.c
index bb44ec032b..6814dd97e9 100644
--- a/gdb/amd64fbsd-tdep.c
+++ b/gdb/amd64fbsd-tdep.c
@@ -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_info *next_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 = 0x7fffffffffc0;
 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_GREGS] =
   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 */
diff --git a/gdb/amd64nbsd-nat.c b/gdb/amd64nbsd-nat.c
index 4af22feb7f..da4532e69e 100644
--- a/gdb/amd64nbsd-nat.c
+++ b/gdb/amd64nbsd-nat.c
@@ -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 */
diff --git a/gdb/amd64nbsd-tdep.c b/gdb/amd64nbsd-tdep.c
index 5500ed13db..a39c33e7c1 100644
--- a/gdb/amd64nbsd-tdep.c
+++ b/gdb/amd64nbsd-tdep.c
@@ -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 */
diff --git a/gdb/regformats/reg-x86-64.dat b/gdb/regformats/reg-x86-64.dat
index 59ebbf5267..dd1f78fa71 100644
--- a/gdb/regformats/reg-x86-64.dat
+++ b/gdb/regformats/reg-x86-64.dat
@@ -18,6 +18,8 @@ expedite:rbp,rsp,rip
 64:r15
 64:rip
 32:eflags
+32:cs
+32:ss
 32:ds
 32:es
 32:fs
diff --git a/gdb/x86-64-linux-nat.c b/gdb/x86-64-linux-nat.c
index 4ed859bc72..98d30aaa25 100644
--- a/gdb/x86-64-linux-nat.c
+++ b/gdb/x86-64-linux-nat.c
@@ -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_offset[] =
   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 */
 };
diff --git a/gdb/x86-64-linux-tdep.c b/gdb/x86-64-linux-tdep.c
index 71a5364f0e..fee1233f4f 100644
--- a/gdb/x86-64-linux-tdep.c
+++ b/gdb/x86-64-linux-tdep.c
@@ -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 */
 };
diff --git a/gdb/x86-64-tdep.c b/gdb/x86-64-tdep.c
index 5fb1d25ffb..b96193fa3c 100644
--- a/gdb/x86-64-tdep.c
+++ b/gdb/x86-64-tdep.c
@@ -77,12 +77,14 @@ static struct amd64_register_info amd64_register_info[] =
   { "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_register_info[] =
   { "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 },
diff --git a/gdb/x86-64-tdep.h b/gdb/x86-64-tdep.h
index 17d2cdfa44..4aa0e7faf9 100644
--- a/gdb/x86-64-tdep.h
+++ b/gdb/x86-64-tdep.h
@@ -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);