gdbstub: add reverse step support in replay mode
commitfda8458bd3a9cb3108ba2f09921b6e3eee0d1bf3
authorPavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
Sat, 3 Oct 2020 17:13:43 +0000 (3 20:13 +0300)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 6 Oct 2020 06:34:49 +0000 (6 08:34 +0200)
tree4b7b6c3338cebb15cd8d1246a2e5a550de3320c2
parentf9a9fb6516b453d2318eca0fc5eecc4c57f6b065
gdbstub: add reverse step support in replay mode

GDB remote protocol supports two reverse debugging commands:
reverse step and reverse continue.
This patch adds support of the first one to the gdbstub.
Reverse step is intended to step one instruction in the backwards
direction. This is not possible in regular execution.
But replayed execution is deterministic, therefore we can load one of
the prior snapshots and proceed to the desired step. It is equivalent
to stepping one instruction back.
There should be at least one snapshot preceding the debugged part of
the replay log.

Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgalyuk@ispras.ru>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
--

v4 changes:
 - inverted condition in cpu_handle_guest_debug (suggested by Alex Bennée)
Message-Id: <160174522341.12451.1498758422543765253.stgit@pasha-ThinkPad-X280>

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
accel/tcg/translator.c
exec.c
gdbstub.c
include/sysemu/replay.h
replay/replay-debugging.c
softmmu/cpus.c
stubs/replay.c