aboutsummaryrefslogtreecommitdiff
path: root/debug/gdbserver.py
diff options
context:
space:
mode:
authorTim Newsome <tim@sifive.com>2022-12-28 16:49:13 -0800
committerTim Newsome <tim@sifive.com>2022-12-29 10:55:18 -0800
commitcbe0dd1405cd2f33ef1cbbc67eda73bfe65d067e (patch)
treec372611f94c66180c6157c1fc4b470d47c390b5f /debug/gdbserver.py
parent48491dadafcd59442c5bf22603fb0a7f1c589cb9 (diff)
downloadriscv-tests-cbe0dd1405cd2f33ef1cbbc67eda73bfe65d067e.zip
riscv-tests-cbe0dd1405cd2f33ef1cbbc67eda73bfe65d067e.tar.gz
riscv-tests-cbe0dd1405cd2f33ef1cbbc67eda73bfe65d067e.tar.bz2
debug: Add etrigger test.
Diffstat (limited to 'debug/gdbserver.py')
-rwxr-xr-xdebug/gdbserver.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/debug/gdbserver.py b/debug/gdbserver.py
index af8ddcf..1ffb15f 100755
--- a/debug/gdbserver.py
+++ b/debug/gdbserver.py
@@ -1953,6 +1953,25 @@ class StepThread2Test(GdbTest):
# GDB's conception of the current thread
assertEqual(before, after)
+class EtriggerTest(DebugTest):
+ def setup(self):
+ DebugTest.setup(self)
+ self.gdb.b("main:start")
+ self.gdb.c()
+ self.gdb.b("handle_trap")
+
+ def test(self):
+ # Set trigger on Load access fault
+ self.gdb.command("monitor riscv etrigger set m 0x20")
+ # Set fox to a null pointer so we'll get a load access exception later.
+ self.gdb.p("fox=(char*)0")
+ output = self.gdb.c()
+ # We should not be at handle_trap
+ assertNotIn("handle_trap", output)
+ # Instead, we should have hit a breakpoint at trap_entry, which is the
+ # actual exception handler.
+ assertIn("breakpoint", output)
+ assertIn("trap_entry", self.gdb.where())
parsed = None
def main():