diff options
author | Jim Kingdon <jkingdon@engr.sgi.com> | 1993-09-18 19:15:36 +0000 |
---|---|---|
committer | Jim Kingdon <jkingdon@engr.sgi.com> | 1993-09-18 19:15:36 +0000 |
commit | 84d598611e42de0248b0e7689e4ebe062e1699b6 (patch) | |
tree | 1c3a237117e6da4d05253598281ac94dab624a43 /gdb/infrun.c | |
parent | fa79d853b89ca298ff6a6b256e610ccc917cd33b (diff) | |
download | gdb-84d598611e42de0248b0e7689e4ebe062e1699b6.zip gdb-84d598611e42de0248b0e7689e4ebe062e1699b6.tar.gz gdb-84d598611e42de0248b0e7689e4ebe062e1699b6.tar.bz2 |
* defs.h (make_cleanup): Change PTR to void * when inside PARAMS.
Some of the following is in #ifdef CALL_DUMMY_BREAKPOINT_OFFSET.
* breakpoint.h (enum bptype): Add bp_call_dummy.
(struct bpstat_what): Add call_dummy field.
* infrun.c (wait_for_inferior): Deal with it.
* breakpoint.c (bpstat_what): Deal with call dummy breakpoint.
* infcmd.c (run_stack_dummy): Set the call dummy breakpoint.
* config/sparc/tm-sparc.h: Define CALL_DUMMY_BREAKPOINT_OFFSET.
Diffstat (limited to 'gdb/infrun.c')
-rw-r--r-- | gdb/infrun.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/gdb/infrun.c b/gdb/infrun.c index a9d8a64..3656c98 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -721,7 +721,9 @@ wait_for_inferior () random_signal = !(bpstat_explains_signal (stop_bpstat) || trap_expected +#ifndef CALL_DUMMY_BREAKPOINT_OFFSET || PC_IN_CALL_DUMMY (stop_pc, stop_sp, stop_frame_address) +#endif /* No CALL_DUMMY_BREAKPOINT_OFFSET. */ || (step_range_end && step_resume_breakpoint == NULL)); else { @@ -730,7 +732,9 @@ wait_for_inferior () /* End of a stack dummy. Some systems (e.g. Sony news) give another signal besides SIGTRAP, so check here as well as above. */ +#ifndef CALL_DUMMY_BREAKPOINT_OFFSET || PC_IN_CALL_DUMMY (stop_pc, stop_sp, stop_frame_address) +#endif /* No CALL_DUMMY_BREAKPOINT_OFFSET. */ ); if (!random_signal) stop_signal = SIGTRAP; @@ -793,6 +797,14 @@ wait_for_inferior () what = bpstat_what (stop_bpstat); + if (what.call_dummy) + { + stop_stack_dummy = 1; +#ifdef HP_OS_BUG + trap_expected_after_continue = 1; +#endif + } + switch (what.main_action) { case BPSTAT_WHAT_SET_LONGJMP_RESUME: @@ -887,6 +899,12 @@ wait_for_inferior () test for stepping. But, if not stepping, do not stop. */ +#ifndef CALL_DUMMY_BREAKPOINT_OFFSET + /* This is the old way of detecting the end of the stack dummy. + An architecture which defines CALL_DUMMY_BREAKPOINT_OFFSET gets + handled above. As soon as we can test it on all of them, all + architectures should define it. */ + /* If this is the breakpoint at the end of a stack dummy, just stop silently, unless the user was doing an si/ni, in which case she'd better know what she's doing. */ @@ -901,7 +919,8 @@ wait_for_inferior () #endif break; } - +#endif /* No CALL_DUMMY_BREAKPOINT_OFFSET. */ + if (step_resume_breakpoint) /* Having a step-resume breakpoint overrides anything else having to do with stepping commands until @@ -1081,8 +1100,7 @@ step_into_function: since on some machines the prologue is where the new fp value is established. */ step_resume_breakpoint = - set_momentary_breakpoint (sr_sal, (CORE_ADDR)0, - bp_step_resume); + set_momentary_breakpoint (sr_sal, NULL, bp_step_resume); if (breakpoints_inserted) insert_breakpoints (); |