2007-11-07 Markus Deuling <deuling@de.ibm.com>
authorMarkus Deuling <deuling@de.ibm.com>
Wed, 7 Nov 2007 06:58:31 +0000 (06:58 +0000)
committerMarkus Deuling <deuling@de.ibm.com>
Wed, 7 Nov 2007 06:58:31 +0000 (06:58 +0000)
* gdbarch.sh (legacy_virtual_frame_pointer): Add gdbarch parameter.
* gdbarch.{c,h}: Regenerate.
* arch-utils.c (legacy_virtual_frame_pointer): Add gdbarch parameter.
Replace current_gdbarch by gdbarch.
* m32c-tdep.c (m32c_virtual_frame_pointer): Likewise.
* mips-tdep.c (mips_virtual_frame_pointer): Likewise.
* spu-tdep.c (spu_virtual_frame_pointer): Likewise.

gdb/ChangeLog
gdb/arch-utils.c
gdb/gdbarch.c
gdb/gdbarch.h
gdb/gdbarch.sh
gdb/m32c-tdep.c
gdb/mips-tdep.c
gdb/spu-tdep.c

index 8049d36374dc8b2af0831b86a6c914a7b7923378..af8f60287be609aea85edd3574ebbf36af18cac4 100644 (file)
@@ -1,3 +1,13 @@
+2007-11-07  Markus Deuling  <deuling@de.ibm.com>
+
+       * gdbarch.sh (legacy_virtual_frame_pointer): Add gdbarch parameter.
+       * gdbarch.{c,h}: Regenerate.
+       * arch-utils.c (legacy_virtual_frame_pointer): Add gdbarch parameter.
+       Replace current_gdbarch by gdbarch.
+       * m32c-tdep.c (m32c_virtual_frame_pointer): Likewise.
+       * mips-tdep.c (mips_virtual_frame_pointer): Likewise.
+       * spu-tdep.c (spu_virtual_frame_pointer): Likewise.
+
 2007-11-07  Markus Deuling  <deuling@de.ibm.com>
 
        * shnbsd-tdep.c (shnbsd_supply_gregset, shnbsd_collect_gregset): Use
index 4ef616ae7110e2a3f7a8e2063f78283a56b8dd25..c75e10bb8ed5bc00eca45d0e343a7b515f7b4ed7 100644 (file)
@@ -135,7 +135,8 @@ cannot_register_not (int regnum)
    raw.  */
 
 void
-legacy_virtual_frame_pointer (CORE_ADDR pc,
+legacy_virtual_frame_pointer (struct gdbarch *gdbarch, 
+                             CORE_ADDR pc,
                              int *frame_regnum,
                              LONGEST *frame_offset)
 {
@@ -144,14 +145,14 @@ legacy_virtual_frame_pointer (CORE_ADDR pc,
      register and an offset can determine this.  I think it should
      instead generate a byte code expression as that would work better
      with things like Dwarf2's CFI.  */
-  if (gdbarch_deprecated_fp_regnum (current_gdbarch) >= 0
-      && gdbarch_deprecated_fp_regnum (current_gdbarch)
-          < gdbarch_num_regs (current_gdbarch))
-    *frame_regnum = gdbarch_deprecated_fp_regnum (current_gdbarch);
-  else if (gdbarch_sp_regnum (current_gdbarch) >= 0
-          && gdbarch_sp_regnum (current_gdbarch)
-               < gdbarch_num_regs (current_gdbarch))
-    *frame_regnum = gdbarch_sp_regnum (current_gdbarch);
+  if (gdbarch_deprecated_fp_regnum (gdbarch) >= 0
+      && gdbarch_deprecated_fp_regnum (gdbarch)
+          < gdbarch_num_regs (gdbarch))
+    *frame_regnum = gdbarch_deprecated_fp_regnum (gdbarch);
+  else if (gdbarch_sp_regnum (gdbarch) >= 0
+          && gdbarch_sp_regnum (gdbarch)
+               < gdbarch_num_regs (gdbarch))
+    *frame_regnum = gdbarch_sp_regnum (gdbarch);
   else
     /* Should this be an internal error?  I guess so, it is reflecting
        an architectural limitation in the current design.  */
index d84dca48b16db3c5a33aa7f307fde13878c1cdde..ea8c4d4a890a840aba95fbff05f864a8ca5b6796 100644 (file)
@@ -266,7 +266,7 @@ struct gdbarch startup_gdbarch =
   1,  /* char_signed */
   0,  /* read_pc */
   0,  /* write_pc */
-  0,  /* virtual_frame_pointer */
+  legacy_virtual_frame_pointer,  /* virtual_frame_pointer */
   0,  /* pseudo_register_read */
   0,  /* pseudo_register_write */
   0,  /* num_regs */
@@ -1366,7 +1366,7 @@ gdbarch_virtual_frame_pointer (struct gdbarch *gdbarch, CORE_ADDR pc, int *frame
   gdb_assert (gdbarch->virtual_frame_pointer != NULL);
   if (gdbarch_debug >= 2)
     fprintf_unfiltered (gdb_stdlog, "gdbarch_virtual_frame_pointer called\n");
-  gdbarch->virtual_frame_pointer (pc, frame_regnum, frame_offset);
+  gdbarch->virtual_frame_pointer (gdbarch, pc, frame_regnum, frame_offset);
 }
 
 void
index d27498b9748e48b984aef8154d9293f40fd58346..8874d3e61c6fad0eba391d5ceb5e0c495d812adc 100644 (file)
@@ -160,7 +160,7 @@ extern void set_gdbarch_write_pc (struct gdbarch *gdbarch, gdbarch_write_pc_ftyp
    whole scheme for dealing with "frames" and "frame pointers" needs a
    serious shakedown. */
 
-typedef void (gdbarch_virtual_frame_pointer_ftype) (CORE_ADDR pc, int *frame_regnum, LONGEST *frame_offset);
+typedef void (gdbarch_virtual_frame_pointer_ftype) (struct gdbarch *gdbarch, CORE_ADDR pc, int *frame_regnum, LONGEST *frame_offset);
 extern void gdbarch_virtual_frame_pointer (struct gdbarch *gdbarch, CORE_ADDR pc, int *frame_regnum, LONGEST *frame_offset);
 extern void set_gdbarch_virtual_frame_pointer (struct gdbarch *gdbarch, gdbarch_virtual_frame_pointer_ftype *virtual_frame_pointer);
 
index f2840338f898d8993d00e139a81abbff9f46d930..7a0f0358b409717db330d7504d037f9c2bd0ac42 100755 (executable)
@@ -392,7 +392,7 @@ F:void:write_pc:struct regcache *regcache, CORE_ADDR val:regcache, val
 # Function for getting target's idea of a frame pointer.  FIXME: GDB's
 # whole scheme for dealing with "frames" and "frame pointers" needs a
 # serious shakedown.
-f:void:virtual_frame_pointer:CORE_ADDR pc, int *frame_regnum, LONGEST *frame_offset:pc, frame_regnum, frame_offset:0:legacy_virtual_frame_pointer::0
+m:void:virtual_frame_pointer:CORE_ADDR pc, int *frame_regnum, LONGEST *frame_offset:pc, frame_regnum, frame_offset:0:legacy_virtual_frame_pointer::0
 #
 M:void:pseudo_register_read:struct regcache *regcache, int cookednum, gdb_byte *buf:regcache, cookednum, buf
 M:void:pseudo_register_write:struct regcache *regcache, int cookednum, const gdb_byte *buf:regcache, cookednum, buf
index db25f6c86e3cc805735e52581531b5f4bc094e5d..c79f88f95cd1e2066d0d0fea74ad15714dc4281a 100644 (file)
@@ -2525,7 +2525,7 @@ m32c_m16c_pointer_to_address (struct type *type, const gdb_byte *buf)
 }
 
 void
-m32c_virtual_frame_pointer (CORE_ADDR pc,
+m32c_virtual_frame_pointer (struct gdbarch *gdbarch, CORE_ADDR pc,
                            int *frame_regnum,
                            LONGEST *frame_offset)
 {
@@ -2534,12 +2534,12 @@ m32c_virtual_frame_pointer (CORE_ADDR pc,
   struct m32c_prologue p;
 
   struct regcache *regcache = get_current_regcache ();
-  struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
   
   if (!find_pc_partial_function (pc, &name, &func_addr, &func_end))
     internal_error (__FILE__, __LINE__, _("No virtual frame pointer available"));
 
-  m32c_analyze_prologue (current_gdbarch, func_addr, pc, &p);
+  m32c_analyze_prologue (gdbarch, func_addr, pc, &p);
   switch (p.kind)
     {
     case prologue_with_frame_ptr:
@@ -2556,7 +2556,7 @@ m32c_virtual_frame_pointer (CORE_ADDR pc,
       break;
     }
   /* Sanity check */
-  if (*frame_regnum > gdbarch_num_regs (current_gdbarch))
+  if (*frame_regnum > gdbarch_num_regs (gdbarch))
     internal_error (__FILE__, __LINE__, _("No virtual frame pointer available"));
 }
 
index 1a2b55416de8c94aa31d771cf831b07ca4a61383..44e4aeb949918902e5156582aa4f3944a4015a71 100644 (file)
@@ -5040,7 +5040,8 @@ mips_integer_to_address (struct gdbarch *gdbarch,
    an assertion failure.  */
 
 static void
-mips_virtual_frame_pointer (CORE_ADDR pc, int *reg, LONGEST *offset)
+mips_virtual_frame_pointer (struct gdbarch *gdbarch, 
+                           CORE_ADDR pc, int *reg, LONGEST *offset)
 {
   *reg = MIPS_SP_REGNUM;
   *offset = 0;
index f5d0081c120ab82101ecb5e30de3a56095bd6095..4e41f57b5114fffb1a4d94f235b16af90ff7820b 100644 (file)
@@ -708,7 +708,8 @@ spu_skip_prologue (CORE_ADDR pc)
 
 /* Return the frame pointer in use at address PC.  */
 static void
-spu_virtual_frame_pointer (CORE_ADDR pc, int *reg, LONGEST *offset)
+spu_virtual_frame_pointer (struct gdbarch *gdbarch, CORE_ADDR pc,
+                          int *reg, LONGEST *offset)
 {
   struct spu_prologue_data data;
   spu_analyze_prologue (pc, (CORE_ADDR)-1, &data);