From af2336475251b043c1dea6cdc557ee01dde2948b Mon Sep 17 00:00:00 2001 From: Mark Kettenis Date: Sat, 10 Jan 2004 12:52:41 +0000 Subject: [PATCH] * 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. --- gdb/ChangeLog | 22 ++++++++++++++ gdb/amd64fbsd-nat.c | 4 ++- gdb/amd64fbsd-tdep.c | 55 +++++++++++++++++++++++------------ gdb/amd64nbsd-nat.c | 6 ++-- gdb/amd64nbsd-tdep.c | 4 ++- gdb/regformats/reg-x86-64.dat | 2 ++ gdb/x86-64-linux-nat.c | 4 +-- gdb/x86-64-linux-tdep.c | 12 ++++---- gdb/x86-64-tdep.c | 6 ++-- gdb/x86-64-tdep.h | 12 ++++---- 10 files changed, 87 insertions(+), 40 deletions(-) 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 + * 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 . */ 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 . */ -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); -- 2.34.1