In record_btrace_stop_replaying_at_end, we know that we are at the end of
the execution history, so PC must match the current PC if we're not
replaying.
We're not changing any other registers during btrace replay, so we should
be fine leaving the regcache.
But we need to reinit the frame cache, since current frames used the
btrace unwinder.
The main motivation for this, however, is that future patches extend stop
replaying in ways that is not relevant to stop replaying at the end.
return;
btrace_insn_end (&end, btinfo);
+ if (btrace_insn_cmp (replay, &end) != 0)
+ return;
- if (btrace_insn_cmp (replay, &end) == 0)
- record_btrace_stop_replaying (tp);
+ xfree (replay);
+ btinfo->replay = nullptr;
+
+ /* Discard any frames from the btrace unwinder. */
+ reinit_frame_cache ();
}
/* The resume method of target record-btrace. */