aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2008-09-05 11:58:30 +0000
committerUlrich Weigand <uweigand@de.ibm.com>2008-09-05 11:58:30 +0000
commit2454a0247b12f34d5eb87f52172722115b0f0915 (patch)
tree225e9adcebeb877f6390e36968983bda15abe030
parentb52323fa6f6d31f493d91a425c036075ecf05e14 (diff)
downloadgdb-2454a0247b12f34d5eb87f52172722115b0f0915.zip
gdb-2454a0247b12f34d5eb87f52172722115b0f0915.tar.gz
gdb-2454a0247b12f34d5eb87f52172722115b0f0915.tar.bz2
* rs6000-tdep.c (rs6000_gdbarch_init): Setup displaced stepping
*before* calling gdbarch_init_osabi. (rs6000_aix_init_osabi): Disable displaced stepping.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/rs6000-aix-tdep.c7
-rw-r--r--gdb/rs6000-tdep.c22
3 files changed, 24 insertions, 11 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index d8e6e5b..56a34e4 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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
diff --git a/gdb/rs6000-aix-tdep.c b/gdb/rs6000-aix-tdep.c
index 6edea05..a6e40fc 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 966ca1d..d85af53 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;
}