From afb18d0f3dcc99608b41b805fea3526653cee1e3 Mon Sep 17 00:00:00 2001 From: Andrew Cagney Date: Sat, 17 Jan 2004 18:24:15 +0000 Subject: [PATCH] 2004-01-17 Andrew Cagney * gdbarch.sh (DEPRECATED_NPC_REGNUM): Delete. * gdbarch.h, gdbarch.c: Re-generate. * procfs.c (procfs_fetch_registers): Delete reference to DEPRECATED_NPC_REGNUM. (procfs_store_registers): Ditto. * regcache.c (generic_target_write_pc): Simplify. * lynx-nat.c: Delete #ifdef SPARC code. Not used. Index: doc/ChangeLog 2004-01-17 Andrew Cagney * gdbint.texinfo (Target Architecture Definition): Delete documentation on DEPRECATED_NPC_REGNUM. --- gdb/ChangeLog | 8 ++ gdb/doc/ChangeLog | 5 + gdb/doc/gdbint.texinfo | 7 -- gdb/gdbarch.c | 29 ------ gdb/gdbarch.h | 12 --- gdb/gdbarch.sh | 3 - gdb/lynx-nat.c | 208 ----------------------------------------- gdb/procfs.c | 18 ++-- gdb/regcache.c | 10 +- 9 files changed, 24 insertions(+), 276 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index fc965f2127f..a3c9b6da2c3 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,13 @@ 2004-01-17 Andrew Cagney + * gdbarch.sh (DEPRECATED_NPC_REGNUM): Delete. + * gdbarch.h, gdbarch.c: Re-generate. + * procfs.c (procfs_fetch_registers): Delete reference to + DEPRECATED_NPC_REGNUM. + (procfs_store_registers): Ditto. + * regcache.c (generic_target_write_pc): Simplify. + * lynx-nat.c: Delete #ifdef SPARC code. Not used. + * core-sol2.c (fetch_core_registers): Replace DEPRECATED_NPC_REGNUM with equivalent tdep value. diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index 3df808dc3e1..1e213dc10ef 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,8 @@ +2004-01-17 Andrew Cagney + + * gdbint.texinfo (Target Architecture Definition): Delete + documentation on DEPRECATED_NPC_REGNUM. + 2004-01-13 Daniel Jacobowitz * gdb.texinfo: Update copyright year. Mention that set diff --git a/gdb/doc/gdbint.texinfo b/gdb/doc/gdbint.texinfo index 2cd88d9703d..9402274d981 100644 --- a/gdb/doc/gdbint.texinfo +++ b/gdb/doc/gdbint.texinfo @@ -3715,13 +3715,6 @@ be the number (greater than or equal to zero) of that register. This should only need to be defined if @code{TARGET_READ_PC} and @code{TARGET_WRITE_PC} are not defined. -@item DEPRECATED_NPC_REGNUM -@findex DEPRECATED_NPC_REGNUM -The number of the ``next program counter'' register, if defined. - -@code{DEPRECATED_NPC_REGNUM} has been replaced by @code{TARGET_WRITE_PC} -(@pxref{TARGET_WRITE_PC}). - @item PARM_BOUNDARY @findex PARM_BOUNDARY If non-zero, round arguments to a boundary of this many bits before diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c index 0acb14cb5bc..ff32f772761 100644 --- a/gdb/gdbarch.c +++ b/gdb/gdbarch.c @@ -137,7 +137,6 @@ struct gdbarch int pc_regnum; int ps_regnum; int fp0_regnum; - int deprecated_npc_regnum; gdbarch_stab_reg_to_regnum_ftype *stab_reg_to_regnum; gdbarch_ecoff_reg_to_regnum_ftype *ecoff_reg_to_regnum; gdbarch_dwarf_reg_to_regnum_ftype *dwarf_reg_to_regnum; @@ -310,7 +309,6 @@ struct gdbarch startup_gdbarch = -1, /* pc_regnum */ -1, /* ps_regnum */ 0, /* fp0_regnum */ - 0, /* deprecated_npc_regnum */ 0, /* stab_reg_to_regnum */ 0, /* ecoff_reg_to_regnum */ 0, /* dwarf_reg_to_regnum */ @@ -493,7 +491,6 @@ gdbarch_alloc (const struct gdbarch_info *info, current_gdbarch->pc_regnum = -1; current_gdbarch->ps_regnum = -1; current_gdbarch->fp0_regnum = -1; - current_gdbarch->deprecated_npc_regnum = -1; current_gdbarch->stab_reg_to_regnum = no_op_reg_to_regnum; current_gdbarch->ecoff_reg_to_regnum = no_op_reg_to_regnum; current_gdbarch->dwarf_reg_to_regnum = no_op_reg_to_regnum; @@ -630,7 +627,6 @@ verify_gdbarch (struct gdbarch *current_gdbarch) /* Skip verify of pc_regnum, invalid_p == 0 */ /* Skip verify of ps_regnum, invalid_p == 0 */ /* Skip verify of fp0_regnum, invalid_p == 0 */ - /* Skip verify of deprecated_npc_regnum, invalid_p == 0 */ /* Skip verify of stab_reg_to_regnum, invalid_p == 0 */ /* Skip verify of ecoff_reg_to_regnum, invalid_p == 0 */ /* Skip verify of dwarf_reg_to_regnum, invalid_p == 0 */ @@ -1370,14 +1366,6 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file) "gdbarch_dump: DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE = %d\n", DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE); #endif -#ifdef DEPRECATED_NPC_REGNUM - fprintf_unfiltered (file, - "gdbarch_dump: DEPRECATED_NPC_REGNUM # %s\n", - XSTRING (DEPRECATED_NPC_REGNUM)); - fprintf_unfiltered (file, - "gdbarch_dump: DEPRECATED_NPC_REGNUM = %d\n", - DEPRECATED_NPC_REGNUM); -#endif #ifdef DEPRECATED_PC_IN_CALL_DUMMY_P fprintf_unfiltered (file, "gdbarch_dump: %s # %s\n", @@ -2986,23 +2974,6 @@ set_gdbarch_fp0_regnum (struct gdbarch *gdbarch, gdbarch->fp0_regnum = fp0_regnum; } -int -gdbarch_deprecated_npc_regnum (struct gdbarch *gdbarch) -{ - gdb_assert (gdbarch != NULL); - /* Skip verify of deprecated_npc_regnum, invalid_p == 0 */ - if (gdbarch_debug >= 2) - fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_npc_regnum called\n"); - return gdbarch->deprecated_npc_regnum; -} - -void -set_gdbarch_deprecated_npc_regnum (struct gdbarch *gdbarch, - int deprecated_npc_regnum) -{ - gdbarch->deprecated_npc_regnum = deprecated_npc_regnum; -} - int gdbarch_stab_reg_to_regnum (struct gdbarch *gdbarch, int stab_regnr) { diff --git a/gdb/gdbarch.h b/gdb/gdbarch.h index a9df6754327..83ac8ee2b2d 100644 --- a/gdb/gdbarch.h +++ b/gdb/gdbarch.h @@ -376,18 +376,6 @@ extern void set_gdbarch_fp0_regnum (struct gdbarch *gdbarch, int fp0_regnum); #define FP0_REGNUM (gdbarch_fp0_regnum (current_gdbarch)) #endif -/* Replace DEPRECATED_NPC_REGNUM with an implementation of WRITE_PC - that updates PC, NPC and even NNPC. */ - -extern int gdbarch_deprecated_npc_regnum (struct gdbarch *gdbarch); -extern void set_gdbarch_deprecated_npc_regnum (struct gdbarch *gdbarch, int deprecated_npc_regnum); -#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_NPC_REGNUM) -#error "Non multi-arch definition of DEPRECATED_NPC_REGNUM" -#endif -#if !defined (DEPRECATED_NPC_REGNUM) -#define DEPRECATED_NPC_REGNUM (gdbarch_deprecated_npc_regnum (current_gdbarch)) -#endif - /* Convert stab register number (from `r' declaration) to a gdb REGNUM. */ typedef int (gdbarch_stab_reg_to_regnum_ftype) (int stab_regnr); diff --git a/gdb/gdbarch.sh b/gdb/gdbarch.sh index e35948e8e81..1920341ccc7 100755 --- a/gdb/gdbarch.sh +++ b/gdb/gdbarch.sh @@ -454,9 +454,6 @@ v:2:SP_REGNUM:int:sp_regnum::::-1:-1::0 v:2:PC_REGNUM:int:pc_regnum::::-1:-1::0 v:2:PS_REGNUM:int:ps_regnum::::-1:-1::0 v:2:FP0_REGNUM:int:fp0_regnum::::0:-1::0 -# Replace DEPRECATED_NPC_REGNUM with an implementation of WRITE_PC -# that updates PC, NPC and even NNPC. -v:2:DEPRECATED_NPC_REGNUM:int:deprecated_npc_regnum::::0:-1::0 # Convert stab register number (from \`r\' declaration) to a gdb REGNUM. f:2:STAB_REG_TO_REGNUM:int:stab_reg_to_regnum:int stab_regnr:stab_regnr:::no_op_reg_to_regnum::0 # Provide a default mapping from a ecoff register number to a gdb REGNUM. diff --git a/gdb/lynx-nat.c b/gdb/lynx-nat.c index b0e2402d79c..7bfd40ee56e 100644 --- a/gdb/lynx-nat.c +++ b/gdb/lynx-nat.c @@ -256,214 +256,6 @@ static int regmap[] = #endif /* rs6000 */ -#ifdef SPARC - -/* This routine handles some oddball cases for Sparc registers and LynxOS. - In partucular, it causes refs to G0, g5->7, and all fp regs to return zero. - It also handles knows where to find the I & L regs on the stack. */ - -void -fetch_inferior_registers (int regno) -{ - int whatregs = 0; - -#define WHATREGS_FLOAT 1 -#define WHATREGS_GEN 2 -#define WHATREGS_STACK 4 - - if (regno == -1) - whatregs = WHATREGS_FLOAT | WHATREGS_GEN | WHATREGS_STACK; - else if (regno >= L0_REGNUM && regno <= I7_REGNUM) - whatregs = WHATREGS_STACK; - else if (regno >= FP0_REGNUM && regno < FP0_REGNUM + 32) - whatregs = WHATREGS_FLOAT; - else - whatregs = WHATREGS_GEN; - - if (whatregs & WHATREGS_GEN) - { - struct econtext ec; /* general regs */ - char buf[MAX_REGISTER_SIZE]; - int retval; - int i; - - errno = 0; - retval = ptrace (PTRACE_GETREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) & ec, 0); - if (errno) - perror_with_name ("ptrace(PTRACE_GETREGS)"); - - memset (buf, 0, DEPRECATED_REGISTER_RAW_SIZE (G0_REGNUM)); - supply_register (G0_REGNUM, buf); - supply_register (TBR_REGNUM, (char *) &ec.tbr); - - memcpy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (G1_REGNUM)], &ec.g1, - 4 * DEPRECATED_REGISTER_RAW_SIZE (G1_REGNUM)); - for (i = G1_REGNUM; i <= G1_REGNUM + 3; i++) - deprecated_register_valid[i] = 1; - - supply_register (PS_REGNUM, (char *) &ec.psr); - supply_register (Y_REGNUM, (char *) &ec.y); - supply_register (PC_REGNUM, (char *) &ec.pc); - supply_register (DEPRECATED_NPC_REGNUM, (char *) &ec.npc); - supply_register (WIM_REGNUM, (char *) &ec.wim); - - memcpy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (O0_REGNUM)], ec.o, - 8 * DEPRECATED_REGISTER_RAW_SIZE (O0_REGNUM)); - for (i = O0_REGNUM; i <= O0_REGNUM + 7; i++) - deprecated_register_valid[i] = 1; - } - - if (whatregs & WHATREGS_STACK) - { - CORE_ADDR sp; - int i; - - sp = read_register (SP_REGNUM); - - target_read_memory (sp + FRAME_SAVED_I0, - &deprecated_registers[DEPRECATED_REGISTER_BYTE (I0_REGNUM)], - 8 * DEPRECATED_REGISTER_RAW_SIZE (I0_REGNUM)); - for (i = I0_REGNUM; i <= I7_REGNUM; i++) - deprecated_register_valid[i] = 1; - - target_read_memory (sp + FRAME_SAVED_L0, - &deprecated_registers[DEPRECATED_REGISTER_BYTE (L0_REGNUM)], - 8 * DEPRECATED_REGISTER_RAW_SIZE (L0_REGNUM)); - for (i = L0_REGNUM; i <= L0_REGNUM + 7; i++) - deprecated_register_valid[i] = 1; - } - - if (whatregs & WHATREGS_FLOAT) - { - struct fcontext fc; /* fp regs */ - int retval; - int i; - - errno = 0; - retval = ptrace (PTRACE_GETFPREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) & fc, 0); - if (errno) - perror_with_name ("ptrace(PTRACE_GETFPREGS)"); - - memcpy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (FP0_REGNUM)], fc.f.fregs, - 32 * DEPRECATED_REGISTER_RAW_SIZE (FP0_REGNUM)); - for (i = FP0_REGNUM; i <= FP0_REGNUM + 31; i++) - deprecated_register_valid[i] = 1; - - supply_register (FPS_REGNUM, (char *) &fc.fsr); - } -} - -/* This routine handles storing of the I & L regs for the Sparc. The trick - here is that they actually live on the stack. The really tricky part is - that when changing the stack pointer, the I & L regs must be written to - where the new SP points, otherwise the regs will be incorrect when the - process is started up again. We assume that the I & L regs are valid at - this point. */ - -void -store_inferior_registers (int regno) -{ - int whatregs = 0; - - if (regno == -1) - whatregs = WHATREGS_FLOAT | WHATREGS_GEN | WHATREGS_STACK; - else if (regno >= L0_REGNUM && regno <= I7_REGNUM) - whatregs = WHATREGS_STACK; - else if (regno >= FP0_REGNUM && regno < FP0_REGNUM + 32) - whatregs = WHATREGS_FLOAT; - else if (regno == SP_REGNUM) - whatregs = WHATREGS_STACK | WHATREGS_GEN; - else - whatregs = WHATREGS_GEN; - - if (whatregs & WHATREGS_GEN) - { - struct econtext ec; /* general regs */ - int retval; - - ec.tbr = read_register (TBR_REGNUM); - memcpy (&ec.g1, &deprecated_registers[DEPRECATED_REGISTER_BYTE (G1_REGNUM)], - 4 * DEPRECATED_REGISTER_RAW_SIZE (G1_REGNUM)); - - ec.psr = read_register (PS_REGNUM); - ec.y = read_register (Y_REGNUM); - ec.pc = read_register (PC_REGNUM); - ec.npc = read_register (DEPRECATED_NPC_REGNUM); - ec.wim = read_register (WIM_REGNUM); - - memcpy (ec.o, &deprecated_registers[DEPRECATED_REGISTER_BYTE (O0_REGNUM)], - 8 * DEPRECATED_REGISTER_RAW_SIZE (O0_REGNUM)); - - errno = 0; - retval = ptrace (PTRACE_SETREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) & ec, 0); - if (errno) - perror_with_name ("ptrace(PTRACE_SETREGS)"); - } - - if (whatregs & WHATREGS_STACK) - { - int regoffset; - CORE_ADDR sp; - - sp = read_register (SP_REGNUM); - - if (regno == -1 || regno == SP_REGNUM) - { - if (!deprecated_register_valid[L0_REGNUM + 5]) - internal_error (__FILE__, __LINE__, "failed internal consistency check"); - target_write_memory (sp + FRAME_SAVED_I0, - &deprecated_registers[DEPRECATED_REGISTER_BYTE (I0_REGNUM)], - 8 * DEPRECATED_REGISTER_RAW_SIZE (I0_REGNUM)); - - target_write_memory (sp + FRAME_SAVED_L0, - &deprecated_registers[DEPRECATED_REGISTER_BYTE (L0_REGNUM)], - 8 * DEPRECATED_REGISTER_RAW_SIZE (L0_REGNUM)); - } - else if (regno >= L0_REGNUM && regno <= I7_REGNUM) - { - if (!deprecated_register_valid[regno]) - internal_error (__FILE__, __LINE__, "failed internal consistency check"); - if (regno >= L0_REGNUM && regno <= L0_REGNUM + 7) - regoffset = DEPRECATED_REGISTER_BYTE (regno) - DEPRECATED_REGISTER_BYTE (L0_REGNUM) - + FRAME_SAVED_L0; - else - regoffset = DEPRECATED_REGISTER_BYTE (regno) - DEPRECATED_REGISTER_BYTE (I0_REGNUM) - + FRAME_SAVED_I0; - target_write_memory (sp + regoffset, - &deprecated_registers[DEPRECATED_REGISTER_BYTE (regno)], - DEPRECATED_REGISTER_RAW_SIZE (regno)); - } - } - - if (whatregs & WHATREGS_FLOAT) - { - struct fcontext fc; /* fp regs */ - int retval; - -/* We read fcontext first so that we can get good values for fq_t... */ - errno = 0; - retval = ptrace (PTRACE_GETFPREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) & fc, 0); - if (errno) - perror_with_name ("ptrace(PTRACE_GETFPREGS)"); - - memcpy (fc.f.fregs, &deprecated_registers[DEPRECATED_REGISTER_BYTE (FP0_REGNUM)], - 32 * DEPRECATED_REGISTER_RAW_SIZE (FP0_REGNUM)); - - fc.fsr = read_register (FPS_REGNUM); - - errno = 0; - retval = ptrace (PTRACE_SETFPREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) & fc, 0); - if (errno) - perror_with_name ("ptrace(PTRACE_SETFPREGS)"); - } -} -#endif /* SPARC */ - #if defined (I386) || defined (M68K) || defined (rs6000) /* Return the offset relative to the start of the per-thread data to the diff --git a/gdb/procfs.c b/gdb/procfs.c index 72ad202a2e8..090cf73c7b2 100644 --- a/gdb/procfs.c +++ b/gdb/procfs.c @@ -3703,11 +3703,10 @@ procfs_fetch_registers (int regno) if (FP0_REGNUM >= 0) /* need floating point? */ { - if ((regno >= 0 && regno < FP0_REGNUM) || - regno == PC_REGNUM || - (DEPRECATED_NPC_REGNUM >= 0 && regno == DEPRECATED_NPC_REGNUM) || - regno == DEPRECATED_FP_REGNUM || - regno == SP_REGNUM) + if ((regno >= 0 && regno < FP0_REGNUM) + || regno == PC_REGNUM + || regno == DEPRECATED_FP_REGNUM + || regno == SP_REGNUM) return; /* not a floating point register */ if ((fpregs = proc_get_fpregs (pi)) == NULL) @@ -3777,11 +3776,10 @@ procfs_store_registers (int regno) if (FP0_REGNUM >= 0) /* need floating point? */ { - if ((regno >= 0 && regno < FP0_REGNUM) || - regno == PC_REGNUM || - (DEPRECATED_NPC_REGNUM >= 0 && regno == DEPRECATED_NPC_REGNUM) || - regno == DEPRECATED_FP_REGNUM || - regno == SP_REGNUM) + if ((regno >= 0 && regno < FP0_REGNUM) + || regno == PC_REGNUM + || regno == DEPRECATED_FP_REGNUM + || regno == SP_REGNUM) return; /* not a floating point register */ if ((fpregs = proc_get_fpregs (pi)) == NULL) diff --git a/gdb/regcache.c b/gdb/regcache.c index 62c0de516f0..504196df3e6 100644 --- a/gdb/regcache.c +++ b/gdb/regcache.c @@ -1351,15 +1351,11 @@ read_pc (void) void generic_target_write_pc (CORE_ADDR pc, ptid_t ptid) { -#ifdef PC_REGNUM if (PC_REGNUM >= 0) write_register_pid (PC_REGNUM, pc, ptid); - if (DEPRECATED_NPC_REGNUM >= 0) - write_register_pid (DEPRECATED_NPC_REGNUM, pc + 4, ptid); -#else - internal_error (__FILE__, __LINE__, - "generic_target_write_pc"); -#endif + else + internal_error (__FILE__, __LINE__, + "generic_target_write_pc"); } void