aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Alves <pedro@palves.net>2021-11-23 20:35:12 +0000
committerPedro Alves <pedro@palves.net>2022-12-12 19:04:15 +0000
commit72df7c538f5adecbf68630dfc24db7693fbf7e50 (patch)
tree8b748890e391d067f63ba6bbc676b6bf40fffd89
parent883e02207f9cf8fae2d8b4adca5d939d647cefa1 (diff)
downloadgdb-72df7c538f5adecbf68630dfc24db7693fbf7e50.zip
gdb-72df7c538f5adecbf68630dfc24db7693fbf7e50.tar.gz
gdb-72df7c538f5adecbf68630dfc24db7693fbf7e50.tar.bz2
Thread options & clone events (native Linux)
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 Change-Id: If90316e2dcd0c61d0fefa0d463c046011698acf9
-rw-r--r--gdb/linux-nat.c7
-rw-r--r--gdb/linux-nat.h2
2 files changed, 9 insertions, 0 deletions
diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
index f3d02b7..5fadc82 100644
--- a/gdb/linux-nat.c
+++ b/gdb/linux-nat.c
@@ -4468,6 +4468,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
diff --git a/gdb/linux-nat.h b/gdb/linux-nat.h
index 3ed25cc..258041b 100644
--- a/gdb/linux-nat.h
+++ b/gdb/linux-nat.h
@@ -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;