aboutsummaryrefslogtreecommitdiff
path: root/gdb/windows-nat.c
diff options
context:
space:
mode:
authorPedro Alves <pedro@palves.net>2023-05-22 19:09:13 +0100
committerPedro Alves <pedro@palves.net>2024-05-10 11:26:00 +0100
commitf5e5342583c72869461b6f87563c9fc28e06a15a (patch)
tree53c17afd3fa436f01ea3b6206a9a5f5ee3f8b1c1 /gdb/windows-nat.c
parentf428cac6151a5fb66812be52fd05b8eae8a164cd (diff)
downloadfsf-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 'gdb/windows-nat.c')
-rw-r--r--gdb/windows-nat.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c
index bba8468..3b01f50 100644
--- a/gdb/windows-nat.c
+++ b/gdb/windows-nat.c
@@ -1349,6 +1349,7 @@ windows_per_inferior::continue_one_thread (windows_thread_info *th,
}
}
th->resume ();
+ th->last_sig = GDB_SIGNAL_0;
}
/* Resume thread specified by ID, or all artificially suspended
@@ -1449,7 +1450,7 @@ windows_nat_target::resume (ptid_t ptid, int step, enum gdb_signal sig)
DEBUG_EXCEPT ("Cannot continue with signal %d here. "
"Not stopped for EXCEPTION_DEBUG_EVENT", sig);
}
- else if (sig == windows_process.last_sig)
+ else if (sig == th->last_sig)
continue_status = DBG_EXCEPTION_NOT_HANDLED;
else
#if 0
@@ -1473,11 +1474,9 @@ windows_nat_target::resume (ptid_t ptid, int step, enum gdb_signal sig)
}
#endif
DEBUG_EXCEPT ("Can only continue with received signal %d.",
- windows_process.last_sig);
+ th->last_sig);
}
- windows_process.last_sig = GDB_SIGNAL_0;
-
#ifdef __x86_64__
if (windows_process.wow64_process)
{
@@ -1590,8 +1589,6 @@ windows_nat_target::get_windows_debug_event
}
}
- windows_process.last_sig = GDB_SIGNAL_0;
-
if ((options & TARGET_WNOHANG) != 0 && !m_debug_event_pending)
{
ourstatus->set_ignore ();
@@ -1910,7 +1907,6 @@ windows_nat_target::do_initial_windows_stuff (DWORD pid, bool attaching)
{
struct inferior *inf;
- windows_process.last_sig = GDB_SIGNAL_0;
windows_process.open_process_used = 0;
#ifdef __CYGWIN__
windows_process.cygwin_load_start = 0;