X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=debug%2Ftestlib.py;h=fb5bee33b1284b36ecafe918821a979ad1cf738c;hb=bd8f01b7942177911208fff916492ad4539638fb;hp=38ae33beb8d308822858a1047b5b0cb0149a576e;hpb=df93b0dc9a6580b4f74a10c50190e008d57f41f4;p=riscv-tests.git diff --git a/debug/testlib.py b/debug/testlib.py index 38ae33b..fb5bee3 100644 --- a/debug/testlib.py +++ b/debug/testlib.py @@ -549,6 +549,8 @@ class Gdb(object): output = self.command("load", ops=1000) assert "failed" not in output assert "Transfer rate" in output + output = self.command("compare-sections", ops=1000) + assert "MIS" not in output def b(self, location): output = self.command("b %s" % location, ops=5) @@ -594,8 +596,12 @@ class PrivateState(object): self.gdb.pop_state() def run_all_tests(module, target, parsed): - if not os.path.exists(parsed.logs): + try: os.makedirs(parsed.logs) + except OSError: + # There's a race where multiple instances of the test program might + # decide to create the logs directory at the same time. + pass overall_start = time.time() @@ -848,22 +854,28 @@ class GdbTest(BaseTest): self.gdb.interrupt() self.gdb.command("disassemble", ops=20) self.gdb.command("info registers all", ops=100) + self.gdb.command("flush regs") + self.gdb.command("info threads", ops=100) def classTeardown(self): del self.gdb BaseTest.classTeardown(self) -class GdbSingleHartTest(GdbTest): - def classSetup(self): - GdbTest.classSetup(self) - + def parkOtherHarts(self): + """Park harts besides the currently selected one in loop_forever().""" for hart in self.target.harts: # Park all harts that we're not using in a safe place. if hart != self.hart: self.gdb.select_hart(hart) self.gdb.p("$pc=loop_forever") + self.gdb.select_hart(self.hart) +class GdbSingleHartTest(GdbTest): + def classSetup(self): + GdbTest.classSetup(self) + self.parkOtherHarts() + class ExamineTarget(GdbTest): def test(self): for hart in self.target.harts: