[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