From 86e57d1b233e15f7d72b39dbd381a7e5a9d1b026 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Thu, 18 Jun 2020 21:28:31 +0100 Subject: [PATCH] Don't write to inferior_ptid in btrace_fetch gdb/ChangeLog: 2020-06-18 Pedro Alves * btrace.c (btrace_fetch): Use switch_to_thread instead of writing to inferior_ptid. --- gdb/ChangeLog | 5 +++++ gdb/btrace.c | 11 ++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c465a4d36d5..2f3c1e58874 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2020-06-18 Pedro Alves + + * btrace.c (btrace_fetch): Use switch_to_thread instead of writing + to inferior_ptid. + 2020-06-18 Pedro Alves * bsd-kvm.c (bsd_kvm_target::close): Use switch_to_no_thread diff --git a/gdb/btrace.c b/gdb/btrace.c index d41e3c4f8f9..2a0c61de766 100644 --- a/gdb/btrace.c +++ b/gdb/btrace.c @@ -1910,11 +1910,12 @@ btrace_fetch (struct thread_info *tp, const struct btrace_cpu *cpu) if (btinfo->replay != NULL) return; - /* With CLI usage, TP->PTID always equals INFERIOR_PTID here. Now that we - can store a gdb.Record object in Python referring to a different thread - than the current one, temporarily set INFERIOR_PTID. */ - scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid); - inferior_ptid = tp->ptid; + /* With CLI usage, TP is always the current thread when we get here. + However, since we can also store a gdb.Record object in Python + referring to a different thread than the current one, we need to + temporarily set the current thread. */ + scoped_restore_current_thread restore_thread; + switch_to_thread (tp); /* We should not be called on running or exited threads. */ gdb_assert (can_access_registers_thread (tp)); -- 2.30.2