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  <tromey@adacore.com>

	* ravenscar-thread.c (update_thread_list): Set inferior_ptid.
This commit is contained in:
Tom Tromey 2020-08-07 10:26:45 -06:00
parent 592f9bd76a
commit 0e29517d97
2 changed files with 10 additions and 0 deletions

View file

@ -1,3 +1,7 @@
2020-08-07 Tom Tromey <tromey@adacore.com>
* ravenscar-thread.c (update_thread_list): Set inferior_ptid.
2020-08-07 Tom Tromey <tromey@adacore.com>
* ravenscar-thread.c (ravenscar_thread_target::wait): Call

View file

@ -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