mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-06 14:49:38 +08:00
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.
This commit is contained in:
@ -899,7 +899,7 @@ sync_threadlists (pid_t pid)
|
|||||||
|
|
||||||
thread = add_thread_with_info (proc_target,
|
thread = add_thread_with_info (proc_target,
|
||||||
ptid_t (pid, 0, pbuf[pi].pthid),
|
ptid_t (pid, 0, pbuf[pi].pthid),
|
||||||
priv);
|
private_thread_info_up (priv));
|
||||||
|
|
||||||
pi++;
|
pi++;
|
||||||
}
|
}
|
||||||
|
@ -351,7 +351,8 @@ darwin_nat_target::check_new_threads (inferior *inf)
|
|||||||
pti->msg_state = DARWIN_RUNNING;
|
pti->msg_state = DARWIN_RUNNING;
|
||||||
|
|
||||||
/* Add the new thread. */
|
/* 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_thread_vec.push_back (pti);
|
||||||
new_ix++;
|
new_ix++;
|
||||||
continue;
|
continue;
|
||||||
|
@ -222,6 +222,9 @@ struct private_thread_info
|
|||||||
virtual ~private_thread_info () = 0;
|
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
|
/* Threads are intrusively refcounted objects. Being the
|
||||||
user-selected thread is normally considered an implicit strong
|
user-selected thread is normally considered an implicit strong
|
||||||
reference and is thus not accounted in the refcount, unlike
|
reference and is thus not accounted in the refcount, unlike
|
||||||
@ -522,7 +525,7 @@ public:
|
|||||||
struct frame_id initiating_frame = null_frame_id;
|
struct frame_id initiating_frame = null_frame_id;
|
||||||
|
|
||||||
/* Private data used by the target vector implementation. */
|
/* 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. */
|
/* Branch trace information for this thread. */
|
||||||
struct btrace_thread_info btrace {};
|
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. */
|
/* Same as add_thread, and sets the private info. */
|
||||||
extern struct thread_info *add_thread_with_info (process_stratum_target *targ,
|
extern struct thread_info *add_thread_with_info (process_stratum_target *targ,
|
||||||
ptid_t ptid,
|
ptid_t ptid,
|
||||||
private_thread_info *);
|
private_thread_info_up);
|
||||||
|
|
||||||
/* Delete thread THREAD and notify of thread exit. If the thread is
|
/* Delete thread THREAD and notify of thread exit. If the thread is
|
||||||
currently not deletable, don't actually delete it but still tag it
|
currently not deletable, don't actually delete it but still tag it
|
||||||
|
@ -1366,7 +1366,8 @@ record_thread (struct thread_db_info *info,
|
|||||||
thread with this PTID, but it's marked exited, then the kernel
|
thread with this PTID, but it's marked exited, then the kernel
|
||||||
reused the tid of an old thread. */
|
reused the tid of an old thread. */
|
||||||
if (tp == NULL || tp->state == THREAD_EXITED)
|
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
|
else
|
||||||
tp->priv.reset (priv);
|
tp->priv.reset (priv);
|
||||||
|
|
||||||
|
@ -306,11 +306,11 @@ add_thread_silent (process_stratum_target *targ, ptid_t ptid)
|
|||||||
|
|
||||||
struct thread_info *
|
struct thread_info *
|
||||||
add_thread_with_info (process_stratum_target *targ, ptid_t ptid,
|
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);
|
thread_info *result = add_thread_silent (targ, ptid);
|
||||||
|
|
||||||
result->priv.reset (priv);
|
result->priv = std::move (priv);
|
||||||
|
|
||||||
if (print_thread_events)
|
if (print_thread_events)
|
||||||
gdb_printf (_("[New %s]\n"), target_pid_to_str (ptid).c_str ());
|
gdb_printf (_("[New %s]\n"), target_pid_to_str (ptid).c_str ());
|
||||||
|
Reference in New Issue
Block a user