From: Ulrich Weigand Date: Fri, 5 Sep 2008 11:58:30 +0000 (+0000) Subject: * rs6000-tdep.c (rs6000_gdbarch_init): Setup displaced stepping X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2454a0247b12f34d5eb87f52172722115b0f0915;p=binutils-gdb.git * rs6000-tdep.c (rs6000_gdbarch_init): Setup displaced stepping *before* calling gdbarch_init_osabi. (rs6000_aix_init_osabi): Disable displaced stepping. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d8e6e5b5132..56a34e4d669 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2008-09-05 Ulrich Weigand + + * 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 * target.c (update_current_target): Do not inherit to_open diff --git a/gdb/rs6000-aix-tdep.c b/gdb/rs6000-aix-tdep.c index 6edea05666b..a6e40fca006 100644 --- a/gdb/rs6000-aix-tdep.c +++ b/gdb/rs6000-aix-tdep.c @@ -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); diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c index 966ca1d4f18..d85af53133d 100644 --- a/gdb/rs6000-tdep.c +++ b/gdb/rs6000-tdep.c @@ -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; }