* mips-tdep.c (mips_gdbarch_init): Only set pc_regnum and
authorMaciej W. Rozycki <macro@linux-mips.org>
Thu, 1 Mar 2012 22:52:03 +0000 (22:52 +0000)
committerMaciej W. Rozycki <macro@linux-mips.org>
Thu, 1 Mar 2012 22:52:03 +0000 (22:52 +0000)
sp_regnum once the gdbarch_init_osabi hook has been called.

gdb/ChangeLog
gdb/mips-tdep.c

index 93b3c7b8ec8e589da73aeb114d138931ff0903a5..8019bccf15d9005c2ae8360b9618165bc0ba192f 100644 (file)
@@ -1,3 +1,8 @@
+2012-03-01  Maciej W. Rozycki  <macro@codesourcery.com>
+
+       * mips-tdep.c (mips_gdbarch_init): Only set pc_regnum and
+       sp_regnum once the gdbarch_init_osabi hook has been called.
+
 2012-03-01  Maciej W. Rozycki  <macro@codesourcery.com>
 
        * mips-tdep.c (mips32_bc1_pc): New function.
index bf396f9dafd616420e9dceec6dc8010906fa3e76..1d0b54f6b2d57c08481dd589a1b0253c2ddf0e46 100644 (file)
@@ -6418,10 +6418,6 @@ mips_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
   regnum = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct mips_regnum);
   *regnum = mips_regnum;
-  /* FIXME: cagney/2003-11-15: For MIPS, hasn't gdbarch_pc_regnum been
-     replaced by gdbarch_read_pc?  */
-  set_gdbarch_pc_regnum (gdbarch, regnum->pc + num_regs);
-  set_gdbarch_sp_regnum (gdbarch, MIPS_SP_REGNUM + num_regs);
   set_gdbarch_fp0_regnum (gdbarch, regnum->fp0);
   set_gdbarch_num_regs (gdbarch, num_regs);
   set_gdbarch_num_pseudo_regs (gdbarch, num_regs);
@@ -6650,6 +6646,14 @@ mips_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   info.tdep_info = (void *) tdesc_data;
   gdbarch_init_osabi (info, gdbarch);
 
+  /* The hook may have adjusted num_regs, fetch the final value and
+     set pc_regnum and sp_regnum now that it has been fixed.  */
+  /* FIXME: cagney/2003-11-15: For MIPS, hasn't gdbarch_pc_regnum been
+     replaced by gdbarch_read_pc?  */
+  num_regs = gdbarch_num_regs (gdbarch);
+  set_gdbarch_pc_regnum (gdbarch, regnum->pc + num_regs);
+  set_gdbarch_sp_regnum (gdbarch, MIPS_SP_REGNUM + num_regs);
+
   /* Unwind the frame.  */
   dwarf2_append_unwinders (gdbarch);
   frame_unwind_append_unwinder (gdbarch, &mips_stub_frame_unwind);