diff options
Diffstat (limited to 'gdb/infrun.c')
-rw-r--r-- | gdb/infrun.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gdb/infrun.c b/gdb/infrun.c index 8466ed6..dfd6e71 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -4451,7 +4451,8 @@ done: || last.kind == TARGET_WAITKIND_EXITED || (!inferior_thread ()->step_multi && !(inferior_thread ()->stop_bpstat - && inferior_thread ()->proceed_to_finish))) + && inferior_thread ()->proceed_to_finish) + && !inferior_thread ()->in_infcall)) { if (!ptid_equal (inferior_ptid, null_ptid)) observer_notify_normal_stop (inferior_thread ()->stop_bpstat, @@ -5008,6 +5009,7 @@ struct inferior_status int breakpoint_proceeded; int proceed_to_finish; + int in_infcall; }; /* Save all of the information associated with the inferior<==>gdb @@ -5038,6 +5040,7 @@ save_inferior_status (void) tp->stop_bpstat = bpstat_copy (tp->stop_bpstat); inf_status->breakpoint_proceeded = breakpoint_proceeded; inf_status->proceed_to_finish = tp->proceed_to_finish; + inf_status->in_infcall = tp->in_infcall; inf_status->selected_frame_id = get_frame_id (get_selected_frame (NULL)); @@ -5088,6 +5091,7 @@ restore_inferior_status (struct inferior_status *inf_status) inf_status->stop_bpstat = NULL; breakpoint_proceeded = inf_status->breakpoint_proceeded; tp->proceed_to_finish = inf_status->proceed_to_finish; + tp->in_infcall = inf_status->in_infcall; if (target_has_stack) { |