qemu/tests/guest-debug/test_gdbstub.py
Ilya Leoshkevich 4d48c1bc07 tests/tcg: Factor out gdbstub test functions
Both the report() function as well as the initial gdbstub test sequence
are copy-pasted into ~10 files with slight modifications. This
indicates that they are indeed generic, so factor them out. While
at it, add a few newlines to make the formatting closer to PEP-8.

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Message-Id: <20240129093410.3151-3-iii@linux.ibm.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2024-01-29 20:48:49 +10:00

61 lines
1.4 KiB
Python

"""Helper functions for gdbstub testing
"""
from __future__ import print_function
import gdb
import os
import sys
import traceback
fail_count = 0
def report(cond, msg):
"""Report success/fail of a test"""
if cond:
print("PASS: {}".format(msg))
else:
print("FAIL: {}".format(msg))
global fail_count
fail_count += 1
def main(test, expected_arch=None):
"""Run a test function
This runs as the script it sourced (via -x, via run-test.py)."""
try:
inferior = gdb.selected_inferior()
arch = inferior.architecture()
print("ATTACHED: {}".format(arch.name()))
if expected_arch is not None:
report(arch.name() == expected_arch,
"connected to {}".format(expected_arch))
except (gdb.error, AttributeError):
print("SKIP: not connected")
exit(0)
if gdb.parse_and_eval("$pc") == 0:
print("SKIP: PC not set")
exit(0)
try:
test()
except:
print("GDB Exception:")
traceback.print_exc(file=sys.stdout)
global fail_count
fail_count += 1
if "QEMU_TEST_INTERACTIVE" in os.environ:
import code
code.InteractiveConsole(locals=globals()).interact()
raise
try:
gdb.execute("kill")
except gdb.error:
pass
print("All tests complete: {} failures".format(fail_count))
exit(fail_count)