aboutsummaryrefslogtreecommitdiff
path: root/gdb/infrun.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/infrun.c')
-rw-r--r--gdb/infrun.c6
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)
{