diff options
author | Tom Tromey <tom@tromey.com> | 2022-03-10 16:56:57 -0700 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2023-08-10 10:50:37 -0600 |
commit | d0ffdf6482024331dc43d9c221c7afc5863a300b (patch) | |
tree | 22bc10e78fac4db876bbd5190011d5da0ee465dc | |
parent | 67bed49ec852aee39172fc867a89ec78c4903883 (diff) | |
download | gdb-d0ffdf6482024331dc43d9c221c7afc5863a300b.zip gdb-d0ffdf6482024331dc43d9c221c7afc5863a300b.tar.gz gdb-d0ffdf6482024331dc43d9c221c7afc5863a300b.tar.bz2 |
Pass unique_ptr to add_thread_with_info
This changes add_thread_with_info to accept a unique_ptr, making it
clear that it takes ownership of the passed-in pointer.
I can't test the AIX or Darwin changes, but I think they are
relatively obvious.
-rw-r--r-- | gdb/aix-thread.c | 2 | ||||
-rw-r--r-- | gdb/darwin-nat.c | 3 | ||||
-rw-r--r-- | gdb/gdbthread.h | 7 | ||||
-rw-r--r-- | gdb/linux-thread-db.c | 3 | ||||
-rw-r--r-- | gdb/thread.c | 4 |
5 files changed, 12 insertions, 7 deletions
diff --git a/gdb/aix-thread.c b/gdb/aix-thread.c index 74cc67c..8c45116 100644 --- a/gdb/aix-thread.c +++ b/gdb/aix-thread.c @@ -899,7 +899,7 @@ sync_threadlists (pid_t pid) thread = add_thread_with_info (proc_target, ptid_t (pid, 0, pbuf[pi].pthid), - priv); + private_thread_info_up (priv)); pi++; } diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c index 4cf2d9f..588e9e2 100644 --- a/gdb/darwin-nat.c +++ b/gdb/darwin-nat.c @@ -351,7 +351,8 @@ darwin_nat_target::check_new_threads (inferior *inf) pti->msg_state = DARWIN_RUNNING; /* Add the new thread. */ - add_thread_with_info (this, ptid_t (inf->pid, 0, new_id), pti); + add_thread_with_info (this, ptid_t (inf->pid, 0, new_id), + private_thread_info_up (pti)); new_thread_vec.push_back (pti); new_ix++; continue; diff --git a/gdb/gdbthread.h b/gdb/gdbthread.h index d294be6..baff68a 100644 --- a/gdb/gdbthread.h +++ b/gdb/gdbthread.h @@ -222,6 +222,9 @@ struct private_thread_info virtual ~private_thread_info () = 0; }; +/* Unique pointer wrapper for private_thread_info. */ +using private_thread_info_up = std::unique_ptr<private_thread_info>; + /* Threads are intrusively refcounted objects. Being the user-selected thread is normally considered an implicit strong reference and is thus not accounted in the refcount, unlike @@ -522,7 +525,7 @@ public: struct frame_id initiating_frame = null_frame_id; /* Private data used by the target vector implementation. */ - std::unique_ptr<private_thread_info> priv; + private_thread_info_up priv; /* Branch trace information for this thread. */ struct btrace_thread_info btrace {}; @@ -616,7 +619,7 @@ extern struct thread_info *add_thread_silent (process_stratum_target *targ, /* Same as add_thread, and sets the private info. */ extern struct thread_info *add_thread_with_info (process_stratum_target *targ, ptid_t ptid, - private_thread_info *); + private_thread_info_up); /* Delete thread THREAD and notify of thread exit. If the thread is currently not deletable, don't actually delete it but still tag it diff --git a/gdb/linux-thread-db.c b/gdb/linux-thread-db.c index 71a81aa..7d9fd57 100644 --- a/gdb/linux-thread-db.c +++ b/gdb/linux-thread-db.c @@ -1366,7 +1366,8 @@ record_thread (struct thread_db_info *info, thread with this PTID, but it's marked exited, then the kernel reused the tid of an old thread. */ if (tp == NULL || tp->state == THREAD_EXITED) - tp = add_thread_with_info (info->process_target, ptid, priv); + tp = add_thread_with_info (info->process_target, ptid, + private_thread_info_up (priv)); else tp->priv.reset (priv); diff --git a/gdb/thread.c b/gdb/thread.c index 7f7f035..63ed87e 100644 --- a/gdb/thread.c +++ b/gdb/thread.c @@ -306,11 +306,11 @@ add_thread_silent (process_stratum_target *targ, ptid_t ptid) struct thread_info * add_thread_with_info (process_stratum_target *targ, ptid_t ptid, - private_thread_info *priv) + private_thread_info_up priv) { thread_info *result = add_thread_silent (targ, ptid); - result->priv.reset (priv); + result->priv = std::move (priv); if (print_thread_events) gdb_printf (_("[New %s]\n"), target_pid_to_str (ptid).c_str ()); |