diff options
author | Simon Marchi <simon.marchi@efficios.com> | 2024-11-07 16:16:59 +0000 |
---|---|---|
committer | Simon Marchi <simon.marchi@polymtl.ca> | 2024-11-08 09:16:23 -0500 |
commit | dceb3cd436e0240857ff914d3f11872a78d0c63c (patch) | |
tree | 0b5e9e1078f1ad8d0e5a7fa10b7ee4adedfd42ce /gdbserver | |
parent | 3470a0e144df6c01f8479fa649f43aa907936e7e (diff) | |
download | gdb-dceb3cd436e0240857ff914d3f11872a78d0c63c.zip gdb-dceb3cd436e0240857ff914d3f11872a78d0c63c.tar.gz gdb-dceb3cd436e0240857ff914d3f11872a78d0c63c.tar.bz2 |
gdbserver: add thread -> process backlink
In a few spots, we need to get to a process from a thread. Having a
backlink from thread to process is cheap and makes the operation
trivial, add it.
Change-Id: I8a94b2919494b1dcaf954de2246386794308aa82
Reviewed-By: Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
Diffstat (limited to 'gdbserver')
-rw-r--r-- | gdbserver/gdbthread.h | 11 | ||||
-rw-r--r-- | gdbserver/inferiors.cc | 4 |
2 files changed, 11 insertions, 4 deletions
diff --git a/gdbserver/gdbthread.h b/gdbserver/gdbthread.h index ab59d66..94333c4 100644 --- a/gdbserver/gdbthread.h +++ b/gdbserver/gdbthread.h @@ -27,8 +27,8 @@ struct regcache; struct thread_info : public intrusive_list_node<thread_info> { - thread_info (ptid_t id, void *target_data) - : id (id), target_data (target_data) + thread_info (ptid_t id, process_info *process, void *target_data) + : id (id), target_data (target_data), m_process (process) {} ~thread_info () @@ -36,6 +36,10 @@ struct thread_info : public intrusive_list_node<thread_info> free_register_cache (this->regcache_data); } + /* Return the process owning this thread. */ + process_info *process () const + { return m_process; } + /* The id of this thread. */ ptid_t id; @@ -81,6 +85,9 @@ struct thread_info : public intrusive_list_node<thread_info> /* Thread options GDB requested with QThreadOptions. */ gdb_thread_options thread_options = 0; + +private: + process_info *m_process; }; void remove_thread (struct thread_info *thread); diff --git a/gdbserver/inferiors.cc b/gdbserver/inferiors.cc index 93555ec..d447808 100644 --- a/gdbserver/inferiors.cc +++ b/gdbserver/inferiors.cc @@ -44,8 +44,8 @@ add_thread (ptid_t thread_id, void *target_data) process_info *process = find_process_pid (thread_id.pid ()); gdb_assert (process != nullptr); - auto &new_thread = process->thread_list ().emplace_back (thread_id, - target_data); + auto &new_thread + = process->thread_list ().emplace_back (thread_id, process, target_data); bool inserted = process->thread_map ().insert ({thread_id, &new_thread}).second; |