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.
This commit is contained in:
parent
d367006fb7
commit
7f63b89b3a
|
@ -1,3 +1,25 @@
|
|||
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,
|
||||
|
|
|
@ -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,
|
||||
};
|
||||
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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,
|
||||
};
|
||||
|
||||
|
|
|
@ -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,
|
||||
};
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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,
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue