diff options
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/infrun.c | 8 |
2 files changed, 13 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f13b2a8..9092177 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2010-05-01 Pedro Alves <pedro@codesourcery.com> + + * infrun.c (prepare_for_detach): In non-stop, context switch to + the thread that got the event before handling the event. + 2010-04-30 Tom Tromey <tromey@redhat.com> * symtab.c (symbol_set_names): Fix typo. diff --git a/gdb/infrun.c b/gdb/infrun.c index 5882cb8..93f50eb 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -2368,6 +2368,14 @@ prepare_for_detach (void) state. */ old_chain_2 = make_cleanup (finish_thread_state_cleanup, &minus_one_ptid); + /* In non-stop mode, each thread is handled individually. + Switch early, so the global state is set correctly for this + thread. */ + if (non_stop + && ecs->ws.kind != TARGET_WAITKIND_EXITED + && ecs->ws.kind != TARGET_WAITKIND_SIGNALLED) + context_switch (ecs->ptid); + /* Now figure out what to do with the result of the result. */ handle_inferior_event (ecs); |