gdb: add destructor to lwp_info
authorSimon Marchi <simon.marchi@polymtl.ca>
Sat, 28 Aug 2021 14:58:44 +0000 (10:58 -0400)
committerSimon Marchi <simon.marchi@polymtl.ca>
Tue, 28 Sep 2021 02:30:11 +0000 (22:30 -0400)
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
gdb/linux-nat.h

index f063db8425b81f90fa1364daef4ed1f71843204b..a297d3b2a8fbec463c24c24aaff46f0dc1ba558f 100644 (file)
@@ -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
index 050b8046da48db0907ed4342cfb3b4a3ff2b68e8..b1b168d2bfee162536347575ad97276064058333 100644 (file)
@@ -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;