From 0e29517d97e94bfceb3abce77aea3b249f6cdaf3 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Fri, 7 Aug 2020 10:26:45 -0600 Subject: [PATCH] Set inferior_ptid in ravenscar_thread_target::update_thread_list Commit 2da4b788f ("Don't write to inferior_ptid in ravenscar-thread.c") caused a Ravenscar regression (which, FWIW, is understandable because Ravenscar is difficult to test). Namely, ravenscar_thread_target::update_thread_list calls iterate_over_live_ada_tasks, which calls ada_build_task_list, which uses target_has_stack -- which relies on inferior_ptid. This patch changes update_thread_list to ensure that inferior_ptid is set before making this call. This avoids various failures on Ravenscar targets. gdb/ChangeLog 2020-08-07 Tom Tromey * ravenscar-thread.c (update_thread_list): Set inferior_ptid. --- gdb/ChangeLog | 4 ++++ gdb/ravenscar-thread.c | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 640fb397a7d..6ae8d7bc1ad 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,7 @@ +2020-08-07 Tom Tromey + + * ravenscar-thread.c (update_thread_list): Set inferior_ptid. + 2020-08-07 Tom Tromey * ravenscar-thread.c (ravenscar_thread_target::wait): Call diff --git a/gdb/ravenscar-thread.c b/gdb/ravenscar-thread.c index 459e5ea3ed3..37df2188cf3 100644 --- a/gdb/ravenscar-thread.c +++ b/gdb/ravenscar-thread.c @@ -419,6 +419,12 @@ ravenscar_thread_target::add_thread (struct ada_task_info *task) void ravenscar_thread_target::update_thread_list () { + /* iterate_over_live_ada_tasks requires that inferior_ptid be set, + but this isn't always the case in target methods. So, we ensure + it here. */ + scoped_restore save_ptid = make_scoped_restore (&inferior_ptid, + m_base_ptid); + /* Do not clear the thread list before adding the Ada task, to keep the thread that the process stratum has included into it (m_base_ptid) and the running thread, that may not have been included -- 2.30.2