2004-05-14 Andrew Cagney <cagney@redhat.com>

* infrun.c (handle_inferior_event): Simplify
	STEP_OVER_UNDEBUGGABLE.
This commit is contained in:
Andrew Cagney 2004-05-14 18:45:42 +00:00
parent a99cf92b09
commit 06f32659ed
2 changed files with 10 additions and 64 deletions

View File

@ -1,5 +1,8 @@
2004-05-14 Andrew Cagney <cagney@redhat.com>
* infrun.c (handle_inferior_event): Simplify
STEP_OVER_UNDEBUGGABLE.
* infrun.c (handle_step_into_function): Delete function.
(handle_inferior_event): Inline calls to
handle_step_into_function.

View File

@ -2353,82 +2353,25 @@ process_event_stop_test:
inferior stopped). Since we want to skip this kind of code,
we keep going until the inferior returns from this
function. */
/* NOTE: cagney/2004-05-12: This test is performed after the
sigtramp test as often sigtramps, while recognized by GDB,
have no symbol information. */
CORE_ADDR real_stop_pc;
if ((step_over_calls == STEP_OVER_NONE)
|| ((step_range_end == 1)
&& in_prologue (prev_pc, ecs->stop_func_start)))
if (step_stop_if_no_debug)
{
/* I presume that step_over_calls is only 0 when we're
supposed to be stepping at the assembly language level
("stepi"). Just stop. */
/* Also, maybe we just did a "nexti" inside a prolog, so we
thought it was a subroutine call but it was not. Stop as
well. FENN */
/* If we have no line number and the step-stop-if-no-debug
is set, we stop the step so that the user has a chance to
switch in assembly mode. */
stop_step = 1;
print_stop_reason (END_STEPPING_RANGE, 0);
stop_stepping (ecs);
return;
}
if (step_over_calls == STEP_OVER_ALL || IGNORE_HELPER_CALL (stop_pc))
else
{
/* We're doing a "next", set a breakpoint at callee's return
address (the address at which the caller will
resume). */
/* Set a breakpoint at callee's return address (the address
at which the caller will resume). */
insert_step_resume_breakpoint (get_prev_frame (get_current_frame ()),
ecs);
keep_going (ecs);
return;
}
/* If we are in a function call trampoline (a stub between the
calling routine and the real function), locate the real
function. That's what tells us (a) whether we want to step
into it at all, and (b) what prologue we want to run to the
end of, if we do step into it. */
real_stop_pc = skip_language_trampoline (stop_pc);
if (real_stop_pc == 0)
real_stop_pc = SKIP_TRAMPOLINE_CODE (stop_pc);
if (real_stop_pc != 0)
ecs->stop_func_start = real_stop_pc;
/* If we have line number information for the function we are
thinking of stepping into, step into it.
If there are several symtabs at that PC (e.g. with include
files), just want to know whether *any* of them have line
numbers. find_pc_line handles this. */
{
struct symtab_and_line tmp_sal;
tmp_sal = find_pc_line (ecs->stop_func_start, 0);
if (tmp_sal.line != 0)
{
step_into_function (ecs);
return;
}
}
/* If we have no line number and the step-stop-if-no-debug is
set, we stop the step so that the user has a chance to switch
in assembly mode. */
if (step_over_calls == STEP_OVER_UNDEBUGGABLE && step_stop_if_no_debug)
{
stop_step = 1;
print_stop_reason (END_STEPPING_RANGE, 0);
stop_stepping (ecs);
return;
}
/* Set a breakpoint at callee's return address (the address at
which the caller will resume). */
insert_step_resume_breakpoint (get_prev_frame (get_current_frame ()), ecs);
keep_going (ecs);
return;
}
if (frame_id_eq (frame_unwind_id (get_current_frame ()),