[PATCH 2/3] gdb: add destructor to lwp_info

Simon Marchi simon.marchi@polymtl.ca
Sat Aug 28 14:58:44 GMT 2021


Replace the lwp_free function with a destructor.  Make lwp_info
non-copyable, since there is now a destructor (we wouldn't want an
lwp_info object getting copied and this->arch_private getting deleted
twice).

Change-Id: I09fcbe967e362566d3a06fed2abca2a9955570fa
---
 gdb/linux-nat.c | 11 ++++-------
 gdb/linux-nat.h |  4 ++++
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
index 26324af3cfa2..930209db6e89 100644
--- a/gdb/linux-nat.c
+++ b/gdb/linux-nat.c
@@ -793,13 +793,10 @@ static int check_ptrace_stopped_lwp_gone (struct lwp_info *lp);
 
 /* Destroy and free LP.  */
 
-static void
-lwp_free (struct lwp_info *lp)
+lwp_info::~lwp_info ()
 {
   /* Let the arch specific bits release arch_lwp_info.  */
-  linux_target->low_delete_thread (lp->arch_private);
-
-  xfree (lp);
+  linux_target->low_delete_thread (this->arch_private);
 }
 
 /* Traversal function for purge_lwp_list.  */
@@ -814,7 +811,7 @@ lwp_lwpid_htab_remove_pid (void **slot, void *info)
     {
       htab_clear_slot (lwp_lwpid_htab, slot);
       lwp_list_remove (lp);
-      lwp_free (lp);
+      delete lp;
     }
 
   return 1;
@@ -899,7 +896,7 @@ delete_lwp (ptid_t ptid)
   lwp_list_remove (lp);
 
   /* Release.  */
-  lwp_free (lp);
+  delete lp;
 }
 
 /* Return a pointer to the structure describing the LWP corresponding
diff --git a/gdb/linux-nat.h b/gdb/linux-nat.h
index 050b8046da48..b1b168d2bfee 100644
--- a/gdb/linux-nat.h
+++ b/gdb/linux-nat.h
@@ -208,6 +208,10 @@ struct lwp_info
     waitstatus.kind = TARGET_WAITKIND_IGNORE;
   }
 
+  ~lwp_info ();
+
+  DISABLE_COPY_AND_ASSIGN (lwp_info);
+
   /* The process id of the LWP.  This is a combination of the LWP id
      and overall process id.  */
   ptid_t ptid;
-- 
2.33.0



More information about the Gdb-patches mailing list