aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;