]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Windows gdb: Always non-stop (default to "maint set target-non-stop on")
authorPedro Alves <pedro@palves.net>
Fri, 16 May 2025 20:11:08 +0000 (21:11 +0100)
committerPedro Alves <pedro@palves.net>
Thu, 30 Apr 2026 17:37:32 +0000 (18:37 +0100)
Since having the target backend work in non-stop mode adds features
compared to old all-stop mode (signal/exception passing/suppression is
truly per-thread), this switches the backend to do
all-stop-on-top-of-non-stop, by having
windows_nat_target::always_non_stop_p return true if non-stop mode is
possible.

To be clear, this just changes how the backend works in coordination
with infrun.  The user-visible mode default mode is still all-stop.

The difference is that infrun is responsible for stopping all threads
when needed, instead of the backend (actually the kernel) always doing
that before reporting an event to infrun.

Approved-By: Tom Tromey <tom@tromey.com>
Change-Id: I83d23dbb1edc7692d5d8b37f5b9e0264c74d4940
commit-id:6f7924dc

gdb/windows-nat.c
gdb/windows-nat.h

index 638e87f6f600f7723268f26624cec55da6144cb0..a9647e90bb81a38df601f5ebd1989abccda547a9 100644 (file)
@@ -3376,6 +3376,15 @@ windows_nat_target::supports_non_stop ()
   return dbg_reply_later_available ();
 }
 
+/* Implementation of the target_ops::always_non_stop_p method.  */
+
+bool
+windows_nat_target::always_non_stop_p ()
+{
+  /* If we can do non-stop, prefer it.  */
+  return supports_non_stop ();
+}
+
 INIT_GDB_FILE (windows_nat)
 {
 #ifdef __CYGWIN__
index 2d6981ada0b9307e5445eabd1d8f9e6282d5cf41..1f7ecb07e4f4fb75ff5c9ad7d8fbf298326fb4ff 100644 (file)
@@ -256,6 +256,7 @@ struct windows_nat_target : public inf_child_target
   }
 
   bool supports_non_stop () override;
+  bool always_non_stop_p () override;
 
   void async (bool enable) override;