diff options
author | Andrew Cagney <cagney@redhat.com> | 2004-04-29 22:36:24 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2004-04-29 22:36:24 +0000 |
commit | a587af0bd533959123a4e538d3ea160530cfaf7a (patch) | |
tree | 68faa1a1fe4a23aca962e31cd410f4e6434ac977 /gdb/infrun.c | |
parent | 13326b4e26cc6f4243ade0912b5384c769290d5e (diff) | |
download | gdb-a587af0bd533959123a4e538d3ea160530cfaf7a.zip gdb-a587af0bd533959123a4e538d3ea160530cfaf7a.tar.gz gdb-a587af0bd533959123a4e538d3ea160530cfaf7a.tar.bz2 |
2004-04-29 Joel Brobecker <brobecker@gnat.com>
Committed by Andrew Cagney.
* infrun.c (handle_inferior_event): Rely on frame IDs to detect
function calls.
Diffstat (limited to 'gdb/infrun.c')
-rw-r--r-- | gdb/infrun.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/gdb/infrun.c b/gdb/infrun.c index fea2498..5f11475 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -2465,6 +2465,18 @@ process_event_stop_test: return; } + if (step_over_calls == STEP_OVER_UNDEBUGGABLE + && ecs->stop_func_name == NULL) + { + /* There is no symbol, not even a minimal symbol, corresponding + to the address where we just stopped. So we just stepped + inside undebuggable code. Since we want to step over this + kind of code, we keep going until the inferior returns from + the current function. */ + handle_step_into_function (ecs); + return; + } + /* We can't update step_sp every time through the loop, because reading the stack pointer would slow down stepping too much. But we can update it every time we leave the step range. */ @@ -2543,11 +2555,8 @@ process_event_stop_test: return; } - if (((stop_pc == ecs->stop_func_start /* Quick test */ - || in_prologue (stop_pc, ecs->stop_func_start)) - && !IN_SOLIB_RETURN_TRAMPOLINE (stop_pc, ecs->stop_func_name)) - || IN_SOLIB_CALL_TRAMPOLINE (stop_pc, ecs->stop_func_name) - || ecs->stop_func_name == 0) + if (frame_id_eq (get_frame_id (get_prev_frame (get_current_frame ())), + step_frame_id)) { /* It's a subroutine call. */ handle_step_into_function (ecs); |