aboutsummaryrefslogtreecommitdiff
path: root/gdbserver
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@efficios.com>2024-11-07 16:16:59 +0000
committerSimon Marchi <simon.marchi@polymtl.ca>2024-11-08 09:16:23 -0500
commitdceb3cd436e0240857ff914d3f11872a78d0c63c (patch)
tree0b5e9e1078f1ad8d0e5a7fa10b7ee4adedfd42ce /gdbserver
parent3470a0e144df6c01f8479fa649f43aa907936e7e (diff)
downloadgdb-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.h11
-rw-r--r--gdbserver/inferiors.cc4
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;