diff options
author | Luis Machado <luisgpm@br.ibm.com> | 2008-07-15 17:25:21 +0000 |
---|---|---|
committer | Luis Machado <luisgpm@br.ibm.com> | 2008-07-15 17:25:21 +0000 |
commit | 9a9e3dc8a3893188a602cc17895e6ed01a2b135b (patch) | |
tree | 5fc85f1eb1e553701bd5b8281e0bd3489ceda58d /gdb/infrun.c | |
parent | 95cf58e7bc6daef72eea9ec55ee86af32d007e8b (diff) | |
download | gdb-9a9e3dc8a3893188a602cc17895e6ed01a2b135b.tar.gz |
* infrun.c (handle_inferior_event): Tag threads as stopped
before inserting breakpoints.
Diffstat (limited to 'gdb/infrun.c')
-rw-r--r-- | gdb/infrun.c | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/gdb/infrun.c b/gdb/infrun.c index 410c6dd384f..2f32a82b5ba 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -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: |