* infrun.c (handle_inferior_event): Tag threads as stopped

before inserting breakpoints.
This commit is contained in:
Luis Machado 2008-07-15 17:25:21 +00:00
parent b0a0b9787e
commit 8c90c1370d
2 changed files with 28 additions and 23 deletions

View File

@ -1,3 +1,8 @@
2008-07-15 Luis Machado <luisgpm@br.ibm.com>
* infrun.c (handle_inferior_event): Tag threads as stopped
before inserting breakpoints.
2008-07-15 Hui Zhu <teawater@gmail.com>
* MAINTAINERS: Added myself to section Write After Approval.

View File

@ -1828,6 +1828,29 @@ handle_inferior_event (struct execution_control_state *ecs)
adjust_pc_after_break (ecs);
reinit_frame_cache ();
/* If it's a new process, add it to the thread database */
ecs->new_thread_event = (!ptid_equal (ecs->ptid, inferior_ptid)
&& !ptid_equal (ecs->ptid, minus_one_ptid)
&& !in_thread_list (ecs->ptid));
if (ecs->ws.kind != TARGET_WAITKIND_EXITED
&& ecs->ws.kind != TARGET_WAITKIND_SIGNALLED && ecs->new_thread_event)
add_thread (ecs->ptid);
if (ecs->ws.kind != TARGET_WAITKIND_IGNORE)
{
/* Mark the non-executing threads accordingly. */
if (!non_stop
|| ecs->ws.kind == TARGET_WAITKIND_EXITED
|| ecs->ws.kind == TARGET_WAITKIND_SIGNALLED)
set_executing (pid_to_ptid (-1), 0);
else
set_executing (ecs->ptid, 0);
}
switch (infwait_state)
{
case infwait_thread_hop_state:
@ -1867,29 +1890,6 @@ handle_inferior_event (struct execution_control_state *ecs)
}
infwait_state = infwait_normal_state;
reinit_frame_cache ();
/* If it's a new process, add it to the thread database */
ecs->new_thread_event = (!ptid_equal (ecs->ptid, inferior_ptid)
&& !ptid_equal (ecs->ptid, minus_one_ptid)
&& !in_thread_list (ecs->ptid));
if (ecs->ws.kind != TARGET_WAITKIND_EXITED
&& ecs->ws.kind != TARGET_WAITKIND_SIGNALLED && ecs->new_thread_event)
add_thread (ecs->ptid);
if (ecs->ws.kind != TARGET_WAITKIND_IGNORE)
{
/* Mark the non-executing threads accordingly. */
if (!non_stop
|| ecs->ws.kind == TARGET_WAITKIND_EXITED
|| ecs->ws.kind == TARGET_WAITKIND_SIGNALLED)
set_executing (pid_to_ptid (-1), 0);
else
set_executing (ecs->ptid, 0);
}
switch (ecs->ws.kind)
{
case TARGET_WAITKIND_LOADED: