aboutsummaryrefslogtreecommitdiff
path: root/debug/gdbserver.py
diff options
context:
space:
mode:
authorTim Newsome <tim@sifive.com>2022-12-27 10:55:01 -0800
committerGitHub <noreply@github.com>2022-12-27 10:55:01 -0800
commit48491dadafcd59442c5bf22603fb0a7f1c589cb9 (patch)
treebdbcac818542a847570dd1193ab3b12e1f79ddc2 /debug/gdbserver.py
parent55bbcc8c06637a31cc01970881ba8072838a9121 (diff)
parentc4a61a51b9c92adeaa825abdda1e48fc55f8eab1 (diff)
downloadriscv-tests-48491dadafcd59442c5bf22603fb0a7f1c589cb9.zip
riscv-tests-48491dadafcd59442c5bf22603fb0a7f1c589cb9.tar.gz
riscv-tests-48491dadafcd59442c5bf22603fb0a7f1c589cb9.tar.bz2
Merge pull request #442 from riscv-software-src/ceasetest
Add CeaseStepiTest and CeaseRunTest
Diffstat (limited to 'debug/gdbserver.py')
-rwxr-xr-xdebug/gdbserver.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/debug/gdbserver.py b/debug/gdbserver.py
index 6d7c197..af8ddcf 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,51 @@ 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 CeaseRunTest(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=precease")
+ self.gdb.c(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):