Fix for gdb.base/pc-fp.exp.
authorCarl E. Love <carll@oc4738070240.ibm.com>
Wed, 24 Aug 2016 15:08:58 +0000 (08:08 -0700)
committerCarl E. Love <carll@oc4738070240.ibm.com>
Wed, 24 Aug 2016 15:08:58 +0000 (08:08 -0700)
It is my understanding that GDB used to require each architecture to
define a Frame Pointer (fp).  However, this functionality was deprecated
some time ago so the call to setup the fp_reg was changed to deprecated
(set_gdbarch_deprecated_fp_regnum).  It should have been removed from the
Power code.

That said, the code "set_gdbarch_deprecated_fp_regnum
(gdbarch, PPC_R0_REGNUM + 1);" sets up register r1 as the frame pointer.
Register r1 is no longer used to hold the frame pointer on Power.  By
removing the fp definition for Power in GDB, it causes GDB to fall back
to the call get_frame_base_address (frame) which returns the correct value
depending on the specific senario but most of the time is the DWARF
canonical frame address.

gdb/ChangeLog

2016-08-24  Carl Love  <cel@us.ibm.com>

* rs6000-tdep.c (rs6000_gdbarch_init): Remove call
        set_gdbarch_deprecated_fp_regnum() from initialization function.

gdb/ChangeLog
gdb/rs6000-tdep.c

index 85de2e4beb15fe0c0686dfcad123f9a0c5cce941..229a62b4cd26a926b5d5097bb243c9c9b14a30af 100644 (file)
@@ -1,3 +1,9 @@
+2016-08-24  Carl Love  <cel@us.ibm.com>
+
+       * rs6000-tdep.c (rs6000_gdbarch_init): Remove call
+       set_gdbarch_deprecated_fp_regnum() architecture
+       initialization function.
+
 2016-08-23  Simon Marchi  <simon.marchi@ericsson.com>
 
        * stack.c (parse_frame_specification): Fix typo in comment.
index eb12c5d2a2724d297777d69004af368810176c0c..e18064165ff68a2fbf7e6ac841a44bb0b7d3e70b 100644 (file)
@@ -5957,7 +5957,6 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
   set_gdbarch_pc_regnum (gdbarch, PPC_PC_REGNUM);
   set_gdbarch_sp_regnum (gdbarch, PPC_R0_REGNUM + 1);
-  set_gdbarch_deprecated_fp_regnum (gdbarch, PPC_R0_REGNUM + 1);
   set_gdbarch_fp0_regnum (gdbarch, tdep->ppc_fp0_regnum);
   set_gdbarch_register_sim_regno (gdbarch, rs6000_register_sim_regno);