aboutsummaryrefslogtreecommitdiff
path: root/gdb/infrun.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2009-03-22 17:59:59 +0000
committerPedro Alves <palves@redhat.com>2009-03-22 17:59:59 +0000
commitc5a4d20bb945df22e3244f60cff1860932802354 (patch)
treea58a881ecb6f727cdfd7ceea57a9e2efba44f8d3 /gdb/infrun.c
parent41d2bdb467371e3a18ff8eb69859b1d7cb56a2bd (diff)
downloadgdb-c5a4d20bb945df22e3244f60cff1860932802354.zip
gdb-c5a4d20bb945df22e3244f60cff1860932802354.tar.gz
gdb-c5a4d20bb945df22e3244f60cff1860932802354.tar.bz2
* gdbthread.h (struct thread_info): Add in_infcall member.
* infcall.c (run_inferior_call): Save, set and restore in_infcall. Remove reverences to suppress_resume_observer. Refresh `call_thread' after returning from `proceed'. * infcmd.c (suppress_resume_observer): Delete. * inferior.h (suppress_resume_observer): Delete declaration. * mi/mi-interp.c (mi_on_resume): Suppress output while calling an inferior function. * thread.c (set_running): Remove references to suppress_resume_observer. * infrun.c (struct inferior_status): Add in_infcall member. (save_inferior_status): Save it. (restore_inferior_status): Restore it.
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)
{