gdb: make thread_info::m_thread_fsm a std::unique_ptr
authorLancelot SIX <lancelot.six@amd.com>
Tue, 11 Jan 2022 15:10:11 +0000 (10:10 -0500)
committerLancelot SIX <lancelot.six@amd.com>
Mon, 7 Feb 2022 11:12:06 +0000 (06:12 -0500)
commit573269a87c89ae866db556428fe9ea63d6c4db5f
treeeb6f3111a711e0609ee6db4ff25e17d3ae889194
parentd08cbc5d3203118da5583296e49273cf82378042
gdb: make thread_info::m_thread_fsm a std::unique_ptr

While working on function calls, I realized that the thread_fsm member
of struct thread_info is a raw pointer to a resource it owns.  This
commit changes the type of the thread_fsm member to a std::unique_ptr in
order to signify this ownership relationship and slightly ease resource
management (no need to manually call delete).

To ensure consistent use, the field is made a private member
(m_thread_fsm).  The setter method (set_thread_fsm) can then check
that it is incorrect to associate a FSM to a thread_info object if
another one is already in place.  This is ensured by an assertion.

The function run_inferior_call takes an argument as a pointer to a
call_thread_fsm and installs it in it in a thread_info instance.  Also
change this function's signature to accept a unique_ptr in order to
signify that the ownership of the call_thread_fsm is transferred during
the call.

No user visible change expected after this commit.

Tested on x86_64-linux with no regression observed.

Change-Id: Ia1224f72a4afa247801ce6650ce82f90224a9ae8
gdb/breakpoint.c
gdb/cli/cli-interp.c
gdb/gdbthread.h
gdb/infcall.c
gdb/infcmd.c
gdb/infrun.c
gdb/mi/mi-interp.c
gdb/thread.c