* rs6000-tdep.c (rs6000_gdbarch_init): Setup displaced stepping
authorUlrich Weigand <uweigand@de.ibm.com>
Fri, 5 Sep 2008 11:58:30 +0000 (11:58 +0000)
committerUlrich Weigand <uweigand@de.ibm.com>
Fri, 5 Sep 2008 11:58:30 +0000 (11:58 +0000)
*before* calling gdbarch_init_osabi.
(rs6000_aix_init_osabi): Disable displaced stepping.

gdb/ChangeLog
gdb/rs6000-aix-tdep.c
gdb/rs6000-tdep.c

index d8e6e5b..56a34e4 100644 (file)
@@ -1,5 +1,11 @@
 2008-09-05  Ulrich Weigand  <uweigand@de.ibm.com>
 
+       * rs6000-tdep.c (rs6000_gdbarch_init): Setup displaced stepping
+       *before* calling gdbarch_init_osabi.
+       (rs6000_aix_init_osabi): Disable displaced stepping.
+
+2008-09-05  Ulrich Weigand  <uweigand@de.ibm.com>
+
        * target.c (update_current_target): Do not inherit to_open
        or to_close.
        (pop_target): Call target_close on target_stack instead
index 6edea05..a6e40fc 100644 (file)
@@ -714,6 +714,13 @@ rs6000_aix_init_osabi (struct gdbarch_info info, struct gdbarch *gdbarch)
   /* RS6000/AIX does not support PT_STEP.  Has to be simulated.  */
   set_gdbarch_software_single_step (gdbarch, rs6000_software_single_step);
 
+  /* Displaced stepping is currently not supported in combination with
+     software single-stepping.  */
+  set_gdbarch_displaced_step_copy_insn (gdbarch, NULL);
+  set_gdbarch_displaced_step_fixup (gdbarch, NULL);
+  set_gdbarch_displaced_step_free_closure (gdbarch, NULL);
+  set_gdbarch_displaced_step_location (gdbarch, NULL);
+
   set_gdbarch_push_dummy_call (gdbarch, rs6000_push_dummy_call);
   set_gdbarch_return_value (gdbarch, rs6000_return_value);
   set_gdbarch_long_double_bit (gdbarch, 8 * TARGET_CHAR_BIT);
index 966ca1d..d85af53 100644 (file)
@@ -3669,6 +3669,17 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   /* Frame handling.  */
   dwarf2_frame_set_init_reg (gdbarch, ppc_dwarf2_frame_init_reg);
 
+  /* Setup displaced stepping.  */
+  set_gdbarch_displaced_step_copy_insn (gdbarch,
+                                       simple_displaced_step_copy_insn);
+  set_gdbarch_displaced_step_fixup (gdbarch, ppc_displaced_step_fixup);
+  set_gdbarch_displaced_step_free_closure (gdbarch,
+                                          simple_displaced_step_free_closure);
+  set_gdbarch_displaced_step_location (gdbarch,
+                                      displaced_step_at_entry_point);
+
+  set_gdbarch_max_insn_length (gdbarch, PPC_INSN_SIZE);
+
   /* Hook in ABI-specific overrides, if they have been registered.  */
   info.target_desc = tdesc;
   info.tdep_info = (void *) tdesc_data;
@@ -3732,17 +3743,6 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   gdb_assert (gdbarch_num_regs (gdbarch)
              + gdbarch_num_pseudo_regs (gdbarch) == cur_reg);
 
-  /* Setup displaced stepping.  */
-  set_gdbarch_displaced_step_copy_insn (gdbarch,
-                                       simple_displaced_step_copy_insn);
-  set_gdbarch_displaced_step_fixup (gdbarch, ppc_displaced_step_fixup);
-  set_gdbarch_displaced_step_free_closure (gdbarch,
-                                          simple_displaced_step_free_closure);
-  set_gdbarch_displaced_step_location (gdbarch,
-                                      displaced_step_at_entry_point);
-
-  set_gdbarch_max_insn_length (gdbarch, PPC_INSN_SIZE);
-
   return gdbarch;
 }