Thread options & clone events (native Linux)
authorPedro Alves <pedro@palves.net>
Tue, 23 Nov 2021 20:35:12 +0000 (20:35 +0000)
committerPedro Alves <pedro@palves.net>
Mon, 13 Nov 2023 14:16:10 +0000 (14:16 +0000)
This commit teaches the native Linux target about the
GDB_THREAD_OPTION_CLONE thread option.  It's actually simpler to just
continue reporting all clone events unconditionally to the core.
There's never any harm in reporting a clone event when the option is
disabled.  All we need to do is to report support for the option,
otherwise GDB falls back to use target_thread_events().

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=19675
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=27830
Reviewed-By: Andrew Burgess <aburgess@redhat.com>
Change-Id: If90316e2dcd0c61d0fefa0d463c046011698acf9

gdb/linux-nat.c
gdb/linux-nat.h

index da870e8492238edeb1a10e9b17434e9f45235251..5bbdabc241a9b25268b884fd02a9b4effccf3c34 100644 (file)
@@ -4503,6 +4503,13 @@ linux_nat_target::thread_events (int enable)
   report_thread_events = enable;
 }
 
+bool
+linux_nat_target::supports_set_thread_options (gdb_thread_options options)
+{
+  constexpr gdb_thread_options supported_options = GDB_THREAD_OPTION_CLONE;
+  return ((options & supported_options) == options);
+}
+
 linux_nat_target::linux_nat_target ()
 {
   /* We don't change the stratum; this target will sit at
index 1cdbeafd4f344d76046d8fa7818d76308d573a46..cf236160b4a64b936afe6087b2c5ffb670c4da44 100644 (file)
@@ -82,6 +82,8 @@ public:
 
   void thread_events (int) override;
 
+  bool supports_set_thread_options (gdb_thread_options options) override;
+
   bool can_async_p () override;
 
   bool supports_non_stop () override;