aboutsummaryrefslogtreecommitdiff
path: root/gdb/mi
diff options
context:
space:
mode:
authorLancelot SIX <lancelot.six@amd.com>2022-01-11 10:10:11 -0500
committerLancelot SIX <lancelot.six@amd.com>2022-02-07 06:12:06 -0500
commit573269a87c89ae866db556428fe9ea63d6c4db5f (patch)
treeeb6f3111a711e0609ee6db4ff25e17d3ae889194 /gdb/mi
parentd08cbc5d3203118da5583296e49273cf82378042 (diff)
downloadgdb-573269a87c89ae866db556428fe9ea63d6c4db5f.zip
gdb-573269a87c89ae866db556428fe9ea63d6c4db5f.tar.gz
gdb-573269a87c89ae866db556428fe9ea63d6c4db5f.tar.bz2
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
Diffstat (limited to 'gdb/mi')
-rw-r--r--gdb/mi/mi-interp.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/gdb/mi/mi-interp.c b/gdb/mi/mi-interp.c
index e69ad9a..f02a7cf 100644
--- a/gdb/mi/mi-interp.c
+++ b/gdb/mi/mi-interp.c
@@ -630,12 +630,12 @@ mi_on_normal_stop_1 (struct bpstat *bs, int print_frame)
tp = inferior_thread ();
- if (tp->thread_fsm != NULL
- && tp->thread_fsm->finished_p ())
+ if (tp->thread_fsm () != nullptr
+ && tp->thread_fsm ()->finished_p ())
{
enum async_reply_reason reason;
- reason = tp->thread_fsm->async_reply_reason ();
+ reason = tp->thread_fsm ()->async_reply_reason ();
mi_uiout->field_string ("reason", async_reason_lookup (reason));
}