aboutsummaryrefslogtreecommitdiff
path: root/gdb/ravenscar-thread.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2020-08-07 10:26:45 -0600
committerTom Tromey <tromey@adacore.com>2020-08-07 10:26:47 -0600
commit0e29517d97e94bfceb3abce77aea3b249f6cdaf3 (patch)
tree6f7956483aa993b5d68f6f3722911d454401b23f /gdb/ravenscar-thread.c
parent592f9bd76a1a9888eb95eff24048c12ca2c1f332 (diff)
downloadbinutils-0e29517d97e94bfceb3abce77aea3b249f6cdaf3.zip
binutils-0e29517d97e94bfceb3abce77aea3b249f6cdaf3.tar.gz
binutils-0e29517d97e94bfceb3abce77aea3b249f6cdaf3.tar.bz2
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.
Diffstat (limited to 'gdb/ravenscar-thread.c')
-rw-r--r--gdb/ravenscar-thread.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gdb/ravenscar-thread.c b/gdb/ravenscar-thread.c
index 459e5ea..37df218 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