Multiarch NUM_REGS for MIPS.
authorKevin Buettner <kevinb@redhat.com>
Fri, 13 Dec 2002 18:09:30 +0000 (18:09 +0000)
committerKevin Buettner <kevinb@redhat.com>
Fri, 13 Dec 2002 18:09:30 +0000 (18:09 +0000)
gdb/ChangeLog
gdb/config/mips/tm-irix3.h
gdb/config/mips/tm-irix6.h
gdb/config/mips/tm-mips.h
gdb/mips-tdep.c

index 374231b..18e6972 100644 (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.
index c298a39..8875f79 100644 (file)
@@ -23,7 +23,6 @@
 
 /* Redefine register numbers for SGI. */
 
-#undef NUM_REGS
 #undef MIPS_REGISTER_NAMES
 #undef FP0_REGNUM
 #undef PC_REGNUM
 #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.  */
 
index ce9c226..26813ba 100644 (file)
@@ -24,7 +24,6 @@
 
 /* Redefine register numbers for SGI. */
 
-#undef NUM_REGS
 #undef MIPS_REGISTER_NAMES
 #undef FP0_REGNUM
 #undef PC_REGNUM
 #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.  */
 
index d5a9297..e092d4a 100644 (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.  */
 
index 799415a..4fbaaf8 100644 (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: