* 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.
This commit is contained in:
Jim Kingdon
1993-09-18 19:15:36 +00:00
parent fa79d853b8
commit 84d598611e
7 changed files with 259 additions and 152 deletions

View File

@@ -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 ();