[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 7/7] tests/avocado: ppc64 pseries reverse debugging test
From: |
Nicholas Piggin |
Subject: |
[PATCH 7/7] tests/avocado: ppc64 pseries reverse debugging test |
Date: |
Fri, 23 Jun 2023 22:57:07 +1000 |
pseries can run reverse-debugging well enough to pass basic tests.
There is strangeness with reverse-continue possibly relating to a bp
being set on the first instruction or on a snapshot, that causes
the PC to be reported on the first instruction rather than last
breakpoint, so a workaround is added for that for now.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
tests/avocado/reverse_debugging.py | 28 +++++++++++++++++++++++++++-
1 file changed, 27 insertions(+), 1 deletion(-)
diff --git a/tests/avocado/reverse_debugging.py
b/tests/avocado/reverse_debugging.py
index 680c314cfc..553c931994 100644
--- a/tests/avocado/reverse_debugging.py
+++ b/tests/avocado/reverse_debugging.py
@@ -94,7 +94,7 @@ def gdb_bstep(g):
def vm_get_icount(vm):
return vm.qmp('query-replay')['return']['icount']
- def reverse_debugging(self, shift=7, args=None):
+ def reverse_debugging(self, shift=7, args=None, initial_skip=False):
logger = logging.getLogger('replay')
# create qcow2 for snapshots
@@ -135,6 +135,10 @@ def reverse_debugging(self, shift=7, args=None):
self.fail('Reverse continue is not supported by QEMU')
logger.info('stepping forward')
+
+ if initial_skip:
+ self.gdb_step(g)
+
steps = []
# record first instruction addresses
for _ in range(self.STEPS):
@@ -216,3 +220,25 @@ def test_aarch64_virt(self):
self.reverse_debugging(
args=('-kernel', kernel_path))
+
+class ReverseDebugging_ppc64(ReverseDebugging):
+ """
+ :avocado: tags=accel:tcg
+ """
+
+ REG_PC = 0x40
+
+ # unidentified gitlab timeout problem
+ @skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab')
+ def test_ppc64_pseries(self):
+ """
+ :avocado: tags=arch:ppc64
+ :avocado: tags=machine:pseries
+ """
+ # start with BIOS only
+ self.endian_is_le = False
+ # reverse-continue fails (seems to end up at the start) if a break
+ # is put on the first instruction. initial_skip skips one before the
+ # first bp, and it works. Could be due to break at the same icount
+ # as the snapshot?
+ self.reverse_debugging(initial_skip=True)
--
2.40.1
- [PATCH 1/7] target/ppc: Fix CPU reservation migration for record-replay, (continued)
- [PATCH 1/7] target/ppc: Fix CPU reservation migration for record-replay, Nicholas Piggin, 2023/06/23
- [PATCH 2/7] scripts/replay_dump.sh: Update to current rr record format, Nicholas Piggin, 2023/06/23
- [PATCH 3/7] spapr: Fix machine reset deadlock from replay-record, Nicholas Piggin, 2023/06/23
- [PATCH 4/7] spapr: Fix record-replay machine reset consuming too many events, Nicholas Piggin, 2023/06/23
- [PATCH 5/7] target/ppc: Fix timebase reset with record-replay, Nicholas Piggin, 2023/06/23
- [PATCH 6/7] tests/avocado: boot ppc64 pseries replay-record test to Linux VFS mount, Nicholas Piggin, 2023/06/23
- [PATCH 7/7] tests/avocado: ppc64 pseries reverse debugging test,
Nicholas Piggin <=