diff options
author | Peter Schauer <Peter.Schauer@mytum.de> | 2000-09-24 09:58:16 +0000 |
---|---|---|
committer | Peter Schauer <Peter.Schauer@mytum.de> | 2000-09-24 09:58:16 +0000 |
commit | 582236304cbb83fa360f178a9fa5b3e036e7a0a9 (patch) | |
tree | 8be6716168f13ed97fb2b2d15692f42cdd4f6850 /gdb | |
parent | 0e7e8d51a4cc7dd8b40e4a4032bab953fed4e204 (diff) | |
download | gdb-582236304cbb83fa360f178a9fa5b3e036e7a0a9.zip gdb-582236304cbb83fa360f178a9fa5b3e036e7a0a9.tar.gz gdb-582236304cbb83fa360f178a9fa5b3e036e7a0a9.tar.bz2 |
* rs6000-tdep.c (rs6000_pop_frame): Use PC_IN_CALL_DUMMY to test
for call dummy instead of accessing stop_stack_dummy, which does
not work if we `return' from a stop in a call dummy.
(rs6000_gdbarch_init): Use generic_save_dummy_frame_tos for
dummy_frame_tos function to make PC_IN_CALL_DUMMY work.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/rs6000-tdep.c | 5 |
2 files changed, 10 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3d6041f..57cc3d1 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2000-09-24 Peter Schauer <pes@regent.e-technik.tu-muenchen.de> + + * rs6000-tdep.c (rs6000_pop_frame): Use PC_IN_CALL_DUMMY to test + for call dummy instead of accessing stop_stack_dummy, which does + not work if we `return' from a stop in a call dummy. + (rs6000_gdbarch_init): Use generic_save_dummy_frame_tos for + dummy_frame_tos function to make PC_IN_CALL_DUMMY work. + 2000-09-23 Kevin Buettner <kevinb@redhat.com> * mdebugread.c (mdebug_next_symbol_text): Protoize. diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c index 2c9e134..ccb4299 100644 --- a/gdb/rs6000-tdep.c +++ b/gdb/rs6000-tdep.c @@ -671,8 +671,6 @@ skip_prologue (CORE_ADDR pc, struct rs6000_framedata *fdata) frames, etc. *************************************************************************/ -extern int stop_stack_dummy; - /* Pop the innermost frame, go back to the caller. */ @@ -687,7 +685,7 @@ rs6000_pop_frame (void) pc = read_pc (); sp = FRAME_FP (frame); - if (stop_stack_dummy) + if (PC_IN_CALL_DUMMY (frame->pc, frame->frame, frame->frame)) { generic_pop_dummy_frame (); flush_cached_frames (); @@ -2140,6 +2138,7 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_get_saved_register (gdbarch, generic_get_saved_register); set_gdbarch_fix_call_dummy (gdbarch, rs6000_fix_call_dummy); set_gdbarch_push_dummy_frame (gdbarch, generic_push_dummy_frame); + set_gdbarch_save_dummy_frame_tos (gdbarch, generic_save_dummy_frame_tos); set_gdbarch_push_return_address (gdbarch, ppc_push_return_address); set_gdbarch_believe_pcc_promotion (gdbarch, 1); set_gdbarch_coerce_float_to_double (gdbarch, rs6000_coerce_float_to_double); |