public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb] gdbserver: turn target ops 'thread_name' and 'thread_handle' into methods
@ 2020-02-20 16:42 Tankut Baris Aktemur
0 siblings, 0 replies; only message in thread
From: Tankut Baris Aktemur @ 2020-02-20 16:42 UTC (permalink / raw)
To: gdb-cvs
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=7f63b89b3a4229c2274f613111a907623853351f
commit 7f63b89b3a4229c2274f613111a907623853351f
Author: Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
Date: Mon Feb 17 16:12:02 2020 +0100
gdbserver: turn target ops 'thread_name' and 'thread_handle' into methods
gdbserver/ChangeLog:
2020-02-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
Turn process_stratum_target's thread_name and thread_handle ops
into methods of process_target.
* target.h (struct process_stratum_target): Remove the target ops.
(class process_target): Add the target ops.
(target_thread_name): Update the macro.
(target_thread_handle): Update the macro.
* target.cc (process_target::thread_name): Define.
(process_target::thread_handle): Define.
Update the derived classes and callers below.
* linux-low.cc (linux_target_ops): Update.
(linux_process_target::thread_name): Define.
(linux_process_target::thread_handle): Define.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.
Diff:
---
gdbserver/ChangeLog | 22 ++++++++++++++++++++++
gdbserver/linux-low.cc | 21 +++++++++++++++------
gdbserver/linux-low.h | 7 +++++++
gdbserver/lynx-low.cc | 2 --
gdbserver/nto-low.cc | 2 --
gdbserver/target.cc | 13 +++++++++++++
gdbserver/target.h | 27 +++++++++++++--------------
gdbserver/win32-low.cc | 2 --
8 files changed, 70 insertions(+), 26 deletions(-)
diff --git a/gdbserver/ChangeLog b/gdbserver/ChangeLog
index 6947922..592697a 100644
--- a/gdbserver/ChangeLog
+++ b/gdbserver/ChangeLog
@@ -1,5 +1,27 @@
2020-02-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
+ Turn process_stratum_target's thread_name and thread_handle ops
+ into methods of process_target.
+
+ * target.h (struct process_stratum_target): Remove the target ops.
+ (class process_target): Add the target ops.
+ (target_thread_name): Update the macro.
+ (target_thread_handle): Update the macro.
+ * target.cc (process_target::thread_name): Define.
+ (process_target::thread_handle): Define.
+
+ Update the derived classes and callers below.
+
+ * linux-low.cc (linux_target_ops): Update.
+ (linux_process_target::thread_name): Define.
+ (linux_process_target::thread_handle): Define.
+ * linux-low.h (class linux_process_target): Update.
+ * lynx-low.cc (lynx_target_ops): Update.
+ * nto-low.cc (nto_target_ops): Update.
+ * win32-low.cc (win32_target_ops): Update.
+
+2020-02-20 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
+
Turn process_stratum_target's breakpoint_kind_from_pc,
sw_breakpoint_from_kind, and breakpoint_kind_from_current_state
ops into methods of process_target.
diff --git a/gdbserver/linux-low.cc b/gdbserver/linux-low.cc
index 20a936b..f910866 100644
--- a/gdbserver/linux-low.cc
+++ b/gdbserver/linux-low.cc
@@ -7397,6 +7397,21 @@ linux_process_target::breakpoint_kind_from_current_state (CORE_ADDR *pcptr)
return breakpoint_kind_from_pc (pcptr);
}
+const char *
+linux_process_target::thread_name (ptid_t thread)
+{
+ return linux_proc_tid_get_name (thread);
+}
+
+#if USE_THREAD_DB
+bool
+linux_process_target::thread_handle (ptid_t ptid, gdb_byte **handle,
+ int *handle_len)
+{
+ return thread_db_thread_handle (ptid, handle, handle_len);
+}
+#endif
+
/* Default implementation of linux_target_ops method "set_pc" for
32-bit pc register which is literally named "pc". */
@@ -7509,15 +7524,9 @@ linux_get_hwcap2 (int wordsize)
static linux_process_target the_linux_target;
static process_stratum_target linux_target_ops = {
- linux_proc_tid_get_name,
linux_supports_software_single_step,
linux_supports_catch_syscall,
linux_get_ipa_tdesc_idx,
-#if USE_THREAD_DB
- thread_db_thread_handle,
-#else
- NULL,
-#endif
&the_linux_target,
};
diff --git a/gdbserver/linux-low.h b/gdbserver/linux-low.h
index ae422b8..2acd65f 100644
--- a/gdbserver/linux-low.h
+++ b/gdbserver/linux-low.h
@@ -468,6 +468,13 @@ public:
const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override;
int breakpoint_kind_from_current_state (CORE_ADDR *pcptr) override;
+
+ const char *thread_name (ptid_t thread) override;
+
+#if USE_THREAD_DB
+ bool thread_handle (ptid_t ptid, gdb_byte **handle,
+ int *handle_len) override;
+#endif
};
#define get_thread_lwp(thr) ((struct lwp_info *) (thread_target_data (thr)))
diff --git a/gdbserver/lynx-low.cc b/gdbserver/lynx-low.cc
index b07412f..0c460be 100644
--- a/gdbserver/lynx-low.cc
+++ b/gdbserver/lynx-low.cc
@@ -741,11 +741,9 @@ static lynx_process_target the_lynx_target;
/* The LynxOS target_ops vector. */
static process_stratum_target lynx_target_ops = {
- NULL, /* thread_name */
NULL, /* supports_software_single_step */
NULL, /* supports_catch_syscall */
NULL, /* get_ipa_tdesc_idx */
- NULL, /* thread_handle */
&the_lynx_target,
};
diff --git a/gdbserver/nto-low.cc b/gdbserver/nto-low.cc
index b0ac86f..4c3c5a3 100644
--- a/gdbserver/nto-low.cc
+++ b/gdbserver/nto-low.cc
@@ -947,11 +947,9 @@ nto_process_target::sw_breakpoint_from_kind (int kind, int *size)
static nto_process_target the_nto_target;
static process_stratum_target nto_target_ops = {
- NULL, /* thread_name */
NULL, /* supports_software_single_step */
NULL, /* supports_catch_syscall */
NULL, /* get_ipa_tdesc_idx */
- NULL, /* thread_handle */
&the_nto_target,
};
diff --git a/gdbserver/target.cc b/gdbserver/target.cc
index 76eef62..b7ed26b 100644
--- a/gdbserver/target.cc
+++ b/gdbserver/target.cc
@@ -801,3 +801,16 @@ process_target::breakpoint_kind_from_current_state (CORE_ADDR *pcptr)
{
return breakpoint_kind_from_pc (pcptr);
}
+
+const char *
+process_target::thread_name (ptid_t thread)
+{
+ return nullptr;
+}
+
+bool
+process_target::thread_handle (ptid_t ptid, gdb_byte **handle,
+ int *handle_len)
+{
+ return false;
+}
diff --git a/gdbserver/target.h b/gdbserver/target.h
index 4651e44..4d9de55 100644
--- a/gdbserver/target.h
+++ b/gdbserver/target.h
@@ -70,10 +70,6 @@ class process_target;
shared code. */
struct process_stratum_target
{
- /* Return the thread's name, or NULL if the target is unable to determine it.
- The returned value must not be freed by the caller. */
- const char *(*thread_name) (ptid_t thread);
-
/* Returns true if the target can software single step. */
int (*supports_software_single_step) (void);
@@ -84,11 +80,6 @@ struct process_stratum_target
/* Return tdesc index for IPA. */
int (*get_ipa_tdesc_idx) (void);
- /* Thread ID to (numeric) thread handle: Return true on success and
- false for failure. Return pointer to thread handle via HANDLE
- and the handle's length via HANDLE_LEN. */
- bool (*thread_handle) (ptid_t ptid, gdb_byte **handle, int *handle_len);
-
/* The object that will gradually replace this struct. */
process_target *pt;
};
@@ -503,6 +494,17 @@ public:
PC. The PCPTR is adjusted to the real memory location in case a
flag (e.g., the Thumb bit on ARM) is present in the PC. */
virtual int breakpoint_kind_from_current_state (CORE_ADDR *pcptr);
+
+ /* Return the thread's name, or NULL if the target is unable to
+ determine it. The returned value must not be freed by the
+ caller. */
+ virtual const char *thread_name (ptid_t thread);
+
+ /* Thread ID to (numeric) thread handle: Return true on success and
+ false for failure. Return pointer to thread handle via HANDLE
+ and the handle's length via HANDLE_LEN. */
+ virtual bool thread_handle (ptid_t ptid, gdb_byte **handle,
+ int *handle_len);
};
extern process_stratum_target *the_target;
@@ -683,13 +685,10 @@ void done_accessing_memory (void);
the_target->pt->core_of_thread (ptid)
#define target_thread_name(ptid) \
- (the_target->thread_name ? (*the_target->thread_name) (ptid) \
- : NULL)
+ the_target->pt->thread_name (ptid)
#define target_thread_handle(ptid, handle, handle_len) \
- (the_target->thread_handle ? (*the_target->thread_handle) \
- (ptid, handle, handle_len) \
- : false)
+ the_target->pt->thread_handle (ptid, handle, handle_len)
int read_inferior_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len);
diff --git a/gdbserver/win32-low.cc b/gdbserver/win32-low.cc
index 71adf18..218f007 100644
--- a/gdbserver/win32-low.cc
+++ b/gdbserver/win32-low.cc
@@ -1858,11 +1858,9 @@ win32_process_target::sw_breakpoint_from_kind (int kind, int *size)
static win32_process_target the_win32_target;
static process_stratum_target win32_target_ops = {
- NULL, /* thread_name */
NULL, /* supports_software_single_step */
NULL, /* supports_catch_syscall */
NULL, /* get_ipa_tdesc_idx */
- NULL, /* thread_handle */
&the_win32_target,
};
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-02-20 16:42 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-20 16:42 [binutils-gdb] gdbserver: turn target ops 'thread_name' and 'thread_handle' into methods Tankut Baris Aktemur
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).