diff options
author | Pedro Alves <pedro@palves.net> | 2023-05-22 19:09:13 +0100 |
---|---|---|
committer | Pedro Alves <pedro@palves.net> | 2024-05-10 11:26:00 +0100 |
commit | f5e5342583c72869461b6f87563c9fc28e06a15a (patch) | |
tree | 53c17afd3fa436f01ea3b6206a9a5f5ee3f8b1c1 /gdbserver | |
parent | f428cac6151a5fb66812be52fd05b8eae8a164cd (diff) | |
download | fsf-binutils-gdb-f5e5342583c72869461b6f87563c9fc28e06a15a.zip fsf-binutils-gdb-f5e5342583c72869461b6f87563c9fc28e06a15a.tar.gz fsf-binutils-gdb-f5e5342583c72869461b6f87563c9fc28e06a15a.tar.bz2 |
Windows gdb+gdbserver: Make last_sig per-thread state
With non-stop mode, each thread is controlled independently of the
others, and each thread has its own independent reason for its last
stop.
Thus, any thread-specific state that is currently per-process must be
converted to per-thread state.
This patch converts windows_process_info::last_sig to per-thread
state, moving it to windows_thread_info instead.
This adjusts both native gdb and gdbserver.
Change-Id: Ice09a5d932c912210608d5af25e1898f823e3c99
Diffstat (limited to 'gdbserver')
-rw-r--r-- | gdbserver/win32-low.cc | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/gdbserver/win32-low.cc b/gdbserver/win32-low.cc index 5608fb9..40575e3 100644 --- a/gdbserver/win32-low.cc +++ b/gdbserver/win32-low.cc @@ -302,7 +302,6 @@ do_initial_child_stuff (HANDLE proch, DWORD pid, int attached) { struct process_info *proc; - windows_process.last_sig = GDB_SIGNAL_0; windows_process.handle = proch; windows_process.process_id = pid; windows_process.main_thread_id = 0; @@ -415,6 +414,7 @@ continue_one_thread (thread_info *thread, int thread_id) } th->resume (); + th->last_sig = GDB_SIGNAL_0; } } } @@ -775,11 +775,11 @@ resume_one_thread (thread_info *thread, bool step, gdb_signal sig, "Not stopped for EXCEPTION_DEBUG_EVENT.\n", gdb_signal_to_string (sig))); } - else if (sig == windows_process.last_sig) + else if (sig == th->last_sig) *continue_status = DBG_EXCEPTION_NOT_HANDLED; else OUTMSG (("Can only continue with received signal %s.\n", - gdb_signal_to_string (windows_process.last_sig))); + gdb_signal_to_string (th->last_sig))); } win32_prepare_to_resume (th); @@ -980,7 +980,6 @@ get_child_debug_event (DWORD *continue_status, { ptid_t ptid; - windows_process.last_sig = GDB_SIGNAL_0; ourstatus->set_spurious (); *continue_status = DBG_CONTINUE; |