aboutsummaryrefslogtreecommitdiff
path: root/debug/gdbserver.py
diff options
context:
space:
mode:
authorTim Newsome <tim@sifive.com>2022-11-10 16:11:53 -0800
committerTim Newsome <tim@sifive.com>2022-12-14 16:54:29 -0800
commitb08e2ee7fab0f66bc9bb643db0375fb360c326f3 (patch)
tree586a3ec022ab24cf021d218754cf75ddb2179d4d /debug/gdbserver.py
parent55bbcc8c06637a31cc01970881ba8072838a9121 (diff)
downloadriscv-tests-b08e2ee7fab0f66bc9bb643db0375fb360c326f3.zip
riscv-tests-b08e2ee7fab0f66bc9bb643db0375fb360c326f3.tar.gz
riscv-tests-b08e2ee7fab0f66bc9bb643db0375fb360c326f3.tar.bz2
debug: Add CeaseStepiTest.
Test that we work correctly when the hart we're debugging ceases to respond during stepi. Add wait parameter to Gdb.stepi(), in case stepi isn't expected to complete. Parse "could not read registers" error from gdb
Diffstat (limited to 'debug/gdbserver.py')
-rwxr-xr-xdebug/gdbserver.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/debug/gdbserver.py b/debug/gdbserver.py
index 6d7c197..6f27871 100755
--- a/debug/gdbserver.py
+++ b/debug/gdbserver.py
@@ -18,6 +18,7 @@ from testlib import assertGreater, assertRegex, assertLess
from testlib import GdbTest, GdbSingleHartTest, TestFailed
from testlib import TestNotApplicable, CompileError
from testlib import UnknownThread
+from testlib import CouldNotReadRegisters
MSTATUS_UIE = 0x00000001
MSTATUS_SIE = 0x00000002
@@ -1832,6 +1833,28 @@ class CeaseMultiTest(GdbTest):
self.gdb.p("$pc=_start")
self.exit()
+class CeaseStepiTest(ProgramTest):
+ """Test that we work correctly when the hart we're debugging ceases to
+ respond."""
+ def early_applicable(self):
+ return self.hart.support_cease
+
+ def test(self):
+ self.gdb.b("main")
+ output = self.gdb.c()
+ assertIn("Breakpoint", output)
+ assertIn("main", output)
+
+ self.gdb.p("$pc=cease")
+ self.gdb.stepi(wait=False)
+ self.gdb.expect(r"\S+ became unavailable.")
+ self.gdb.interrupt()
+ try:
+ self.gdb.p("$pc")
+ assert False, ("Registers shouldn't be accessible when the hart is "
+ "unavailable.")
+ except CouldNotReadRegisters:
+ pass
class FreeRtosTest(GdbTest):
def early_applicable(self):