Multiarch NUM_REGS for MIPS.

This commit is contained in:
Kevin Buettner 2002-12-13 18:09:30 +00:00
parent 93ce5efb0a
commit fe29b929e2
5 changed files with 24 additions and 17 deletions

View File

@ -1,3 +1,13 @@
2002-12-13 Kevin Buettner <kevinb@redhat.com>
* config/mips/tm-mips.h, config/mips/tm-irix3.h,
config/mips/tm-irix6.h (NUM_REGS): Delete.
* mips-tdep.c (mips_gdbarch_init): Call set_gdbarch_num_regs().
(temp_saved_regs): Declare as a pointer rather than an array.
(mips32_heuristic_proc_desc, heuristic_proc_desc): Make sure
that ``temp_saved_regs'' has storage allocated to it and that
it's the correct size.
2002-12-13 Jeff Johnston <jjohnstn@redhat.com>
* defs.h (init_last_source_visited): New prototype.

View File

@ -23,7 +23,6 @@
/* Redefine register numbers for SGI. */
#undef NUM_REGS
#undef MIPS_REGISTER_NAMES
#undef FP0_REGNUM
#undef PC_REGNUM
@ -34,10 +33,6 @@
#undef FCRCS_REGNUM
#undef FCRIR_REGNUM
/* Number of machine registers */
#define NUM_REGS 71
/* Initializer for an array of names of registers.
There should be NUM_REGS strings in this initializer. */

View File

@ -24,7 +24,6 @@
/* Redefine register numbers for SGI. */
#undef NUM_REGS
#undef MIPS_REGISTER_NAMES
#undef FP0_REGNUM
#undef PC_REGNUM
@ -35,10 +34,6 @@
#undef FCRCS_REGNUM
#undef FCRIR_REGNUM
/* Number of machine registers */
#define NUM_REGS 71
/* Initializer for an array of names of registers.
There should be NUM_REGS strings in this initializer. */

View File

@ -59,12 +59,6 @@ extern int mips_step_skips_delay (CORE_ADDR);
#define MIPS_REGSIZE 4
#endif
/* Number of machine registers */
#ifndef NUM_REGS
#define NUM_REGS 90
#endif
/* Initializer for an array of names of registers.
There should be NUM_REGS strings in this initializer. */

View File

@ -1714,7 +1714,13 @@ mips_frame_saved_pc (struct frame_info *frame)
}
static struct mips_extra_func_info temp_proc_desc;
static CORE_ADDR temp_saved_regs[NUM_REGS];
/* This hack will go away once the get_prev_frame() code has been
modified to set the frame's type first. That is BEFORE init extra
frame info et.al. is called. This is because it will become
possible to skip the init extra info call for sigtramp and dummy
frames. */
static CORE_ADDR *temp_saved_regs;
/* Set a register's saved stack address in temp_saved_regs. If an address
has already been set for this register, do nothing; this way we will
@ -2026,6 +2032,7 @@ mips32_heuristic_proc_desc (CORE_ADDR start_pc, CORE_ADDR limit_pc,
CORE_ADDR cur_pc;
CORE_ADDR frame_addr = 0; /* Value of $r30. Used by gcc for frame-pointer */
restart:
temp_saved_regs = xrealloc (temp_saved_regs, SIZEOF_FRAME_SAVED_REGS);
memset (temp_saved_regs, '\0', SIZEOF_FRAME_SAVED_REGS);
PROC_FRAME_OFFSET (&temp_proc_desc) = 0;
PROC_FRAME_ADJUST (&temp_proc_desc) = 0; /* offset of FP from SP */
@ -2134,6 +2141,7 @@ heuristic_proc_desc (CORE_ADDR start_pc, CORE_ADDR limit_pc,
if (start_pc == 0)
return NULL;
memset (&temp_proc_desc, '\0', sizeof (temp_proc_desc));
temp_saved_regs = xrealloc (temp_saved_regs, SIZEOF_FRAME_SAVED_REGS);
memset (&temp_saved_regs, '\0', SIZEOF_FRAME_SAVED_REGS);
PROC_LOW_ADDR (&temp_proc_desc) = start_pc;
PROC_FRAME_REG (&temp_proc_desc) = SP_REGNUM;
@ -5757,6 +5765,11 @@ mips_gdbarch_init (struct gdbarch_info info,
set_gdbarch_elf_make_msymbol_special (gdbarch,
mips_elf_make_msymbol_special);
if (osabi == GDB_OSABI_IRIX)
set_gdbarch_num_regs (gdbarch, 71);
else
set_gdbarch_num_regs (gdbarch, 90);
switch (mips_abi)
{
case MIPS_ABI_O32: