X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=debug%2Fgdbserver.py;h=ca117622921863b35a84c1f4b5fed3c78299085e;hb=1099c0dadd3c315d81ba5ef2e8712b6c08076ae2;hp=8a6e87439a124f9835ba8b81f8cea43ee505276f;hpb=37a93a9f86521aea2758271a1cc87c23bca06f59;p=riscv-tests.git diff --git a/debug/gdbserver.py b/debug/gdbserver.py index 8a6e874..ca11762 100755 --- a/debug/gdbserver.py +++ b/debug/gdbserver.py @@ -1,15 +1,16 @@ -#!/usr/bin/python +#!/usr/bin/env python import os import sys import argparse -import testlib import unittest import tempfile import time import random import binascii +import testlib + MSTATUS_UIE = 0x00000001 MSTATUS_SIE = 0x00000002 @@ -41,16 +42,18 @@ def gdb( if parsed.gdb: gdb = testlib.Gdb(parsed.gdb) else: - gdb = testlib.Gdb() + gdb = testlib.Gdb() - if (binary): - gdb.command("file %s" % self.binary) - if (target): + if binary: + gdb.command("file %s" % binary) + if target: gdb.command("set arch riscv:rv%d" % target.xlen) gdb.command("set remotetimeout %d" % target.timeout_sec) - if (port): + if port: gdb.command("target extended-remote localhost:%d" % port) + gdb.p("$priv=3") + return gdb @@ -224,9 +227,8 @@ class DebugTest(DeleteServer): def test_function_call(self): self.gdb.b("main:start") self.gdb.c() - text = "Howdy, Earth!" - gdb_length = self.gdb.p('strlen("%s")' % text) - self.assertEqual(gdb_length, len(text)) + self.assertEqual(self.gdb.p('fib(6)'), 8) + self.assertEqual(self.gdb.p('fib(7)'), 13) self.exit() def test_change_string(self): @@ -238,6 +240,8 @@ class DebugTest(DeleteServer): def test_turbostep(self): """Single step a bunch of times.""" + self.gdb.b("main:start") + self.gdb.c() self.gdb.command("p i=0"); last_pc = None advances = 0 @@ -314,6 +318,27 @@ class DebugTest(DeleteServer): # tests may fail. self.gdb.command("D") + def test_address_trigger(self): + self.gdb.b("main:start") + self.gdb.c() + self.gdb.command("watch fox[13]"); + + output = self.gdb.c() + self.assertNotIn("Could not insert", output) + self.assertIn("rot13", output) + output = self.gdb.command("up") + self.assertIn("in main", output) + self.assertEqual(self.gdb.p_string("fox"), + "Gur dhvpx oebjn fox jumps of the lazy dog.") + + output = self.gdb.c() + self.assertNotIn("Could not insert", output) + self.assertIn("rot13", output) + output = self.gdb.command("up") + self.assertIn("in main", output) + self.assertEqual(self.gdb.p_string("fox"), + "The quick browa sbk whzcf bs gur ynml qbt.") + def test_registers(self): # Get to a point in the code where some registers have actually been # used. @@ -389,8 +414,8 @@ class RegsTest(DeleteServer): self.gdb.p("$pc=write_regs") for i, r in enumerate(regs): - self.gdb.command("p $%s=%d" % (r, (0xdeadbeef<