From: Tankut Baris Aktemur Date: Wed, 29 Jan 2025 09:50:30 +0000 (+0100) Subject: gdbserver: use unique_ptr for thread_info's regcache X-Git-Tag: binutils-2_45~1809 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=41ef481066787b9c72eda27810959f18ddd84f93;p=thirdparty%2Fbinutils-gdb.git gdbserver: use unique_ptr for thread_info's regcache Store the regcache pointer in thread_info as a unique_ptr. This allows us delete the thread_info destructor. Approved-By: Simon Marchi --- diff --git a/gdbserver/gdbthread.h b/gdbserver/gdbthread.h index d3459582a1f..d6e90b1a48f 100644 --- a/gdbserver/gdbthread.h +++ b/gdbserver/gdbthread.h @@ -21,6 +21,7 @@ #include "gdbsupport/function-view.h" #include "gdbsupport/intrusive_list.h" +#include struct btrace_target_info; struct regcache; @@ -31,20 +32,15 @@ struct thread_info : public intrusive_list_node : id (id), m_process (process), m_target_data (target_data) {} - ~thread_info () - { - delete m_regcache; - } - /* Return the process owning this thread. */ process_info *process () const { return m_process; } struct regcache *regcache () - { return m_regcache; } + { return m_regcache.get (); } - void set_regcache (struct regcache *regcache) - { m_regcache = regcache; } + void set_regcache (std::unique_ptr regcache) + { m_regcache = std::move (regcache); } void *target_data () { return m_target_data; } @@ -94,7 +90,7 @@ struct thread_info : public intrusive_list_node private: process_info *m_process; - struct regcache *m_regcache = nullptr; + std::unique_ptr m_regcache = nullptr; void *m_target_data; }; diff --git a/gdbserver/regcache.cc b/gdbserver/regcache.cc index 0b451acc0f0..99291e40e09 100644 --- a/gdbserver/regcache.cc +++ b/gdbserver/regcache.cc @@ -42,8 +42,8 @@ get_thread_regcache (thread_info *thread, bool fetch) gdb_assert (proc->tdesc != NULL); - regcache = new struct regcache (proc->tdesc); - thread->set_regcache (regcache); + thread->set_regcache (std::make_unique (proc->tdesc)); + regcache = thread->regcache (); } if (fetch && !regcache->registers_fetched) @@ -236,7 +236,6 @@ free_register_cache_thread (thread_info *thread) if (regcache != NULL) { regcache_invalidate_thread (thread); - delete regcache; thread->set_regcache (nullptr); } }