forked from Imagelibrary/binutils-gdb
Introduce target_ops method thread_info_to_thread_handle
This patch adds a thread_info_to_thread_handle method to the target_ops struct. It also implements this functionality for remote targets and linux native threads. gdb/ChangeLog: * gdbthread.h (thread_to_thread_handle): Declare. * thread.c (gdbtypes.h): Include. (thread_to_thread_handle): New function. * target.h (struct target_ops): Add thread_info_to_thread_handle. (target_thread_info_to_thread_handle): Declare. * target.c (target_thread_info_to_thread_handle): New function. * target-debug.h (target_debug_print_gdb_byte_vector): Define. * target-delegates.c: Regenerate. * linux-thread-db.c (class thread_db_target): Add method thread_info_to_thread_handle. (thread_db_target::thread_info_to_thread_handle): Define. * remote.c (class remote_target): Add new method thread_info_to_thread_handle. (remote_target::thread_info_to_thread_handle): Define.
This commit is contained in:
@@ -70,6 +70,7 @@ struct dummy_target : public target_ops
|
||||
const char *extra_thread_info (thread_info *arg0) override;
|
||||
const char *thread_name (thread_info *arg0) override;
|
||||
thread_info *thread_handle_to_thread_info (const gdb_byte *arg0, int arg1, inferior *arg2) override;
|
||||
gdb::byte_vector thread_info_to_thread_handle (struct thread_info *arg0) override;
|
||||
void stop (ptid_t arg0) override;
|
||||
void interrupt () override;
|
||||
void pass_ctrlc () override;
|
||||
@@ -237,6 +238,7 @@ struct debug_target : public target_ops
|
||||
const char *extra_thread_info (thread_info *arg0) override;
|
||||
const char *thread_name (thread_info *arg0) override;
|
||||
thread_info *thread_handle_to_thread_info (const gdb_byte *arg0, int arg1, inferior *arg2) override;
|
||||
gdb::byte_vector thread_info_to_thread_handle (struct thread_info *arg0) override;
|
||||
void stop (ptid_t arg0) override;
|
||||
void interrupt () override;
|
||||
void pass_ctrlc () override;
|
||||
@@ -1854,6 +1856,32 @@ debug_target::thread_handle_to_thread_info (const gdb_byte *arg0, int arg1, infe
|
||||
return result;
|
||||
}
|
||||
|
||||
gdb::byte_vector
|
||||
target_ops::thread_info_to_thread_handle (struct thread_info *arg0)
|
||||
{
|
||||
return this->beneath ()->thread_info_to_thread_handle (arg0);
|
||||
}
|
||||
|
||||
gdb::byte_vector
|
||||
dummy_target::thread_info_to_thread_handle (struct thread_info *arg0)
|
||||
{
|
||||
return gdb::byte_vector ();
|
||||
}
|
||||
|
||||
gdb::byte_vector
|
||||
debug_target::thread_info_to_thread_handle (struct thread_info *arg0)
|
||||
{
|
||||
gdb::byte_vector result;
|
||||
fprintf_unfiltered (gdb_stdlog, "-> %s->thread_info_to_thread_handle (...)\n", this->beneath ()->shortname ());
|
||||
result = this->beneath ()->thread_info_to_thread_handle (arg0);
|
||||
fprintf_unfiltered (gdb_stdlog, "<- %s->thread_info_to_thread_handle (", this->beneath ()->shortname ());
|
||||
target_debug_print_struct_thread_info_p (arg0);
|
||||
fputs_unfiltered (") = ", gdb_stdlog);
|
||||
target_debug_print_gdb_byte_vector (result);
|
||||
fputs_unfiltered ("\n", gdb_stdlog);
|
||||
return result;
|
||||
}
|
||||
|
||||
void
|
||||
target_ops::stop (ptid_t arg0)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user