aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2004-05-14 18:45:42 +0000
committerAndrew Cagney <cagney@redhat.com>2004-05-14 18:45:42 +0000
commit06f32659ed272ab4b813b3ba20f0e33109299dc1 (patch)
treea7d10ff93bcc4297a4e18078e7d65252364fc705 /gdb
parenta99cf92b09461acea96080c5c9088ccf27c8af92 (diff)
downloadfsf-binutils-gdb-06f32659ed272ab4b813b3ba20f0e33109299dc1.zip
fsf-binutils-gdb-06f32659ed272ab4b813b3ba20f0e33109299dc1.tar.gz
fsf-binutils-gdb-06f32659ed272ab4b813b3ba20f0e33109299dc1.tar.bz2
2004-05-14 Andrew Cagney <cagney@redhat.com>
* infrun.c (handle_inferior_event): Simplify STEP_OVER_UNDEBUGGABLE.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog3
-rw-r--r--gdb/infrun.c71
2 files changed, 10 insertions, 64 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 264cb5f..4d4c67e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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.
diff --git a/gdb/infrun.c b/gdb/infrun.c
index aaff0d0..3834cd8 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -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 ()),