debug: mark more tests as single-hart tests
authorMegan Wachs <megan@sifive.com>
Fri, 11 May 2018 16:40:10 +0000 (09:40 -0700)
committerMegan Wachs <megan@sifive.com>
Fri, 11 May 2018 16:40:10 +0000 (09:40 -0700)
debug/gdbserver.py

index 98eb818d5ae4146358b92d6611acd798449c8e13..adf179da6f0ea789eaf7daa3e4b925faa4341584 100755 (executable)
@@ -351,7 +351,9 @@ class DebugSymbols(DebugTest):
 
 class DebugBreakpoint(DebugTest):
     def test(self):
+
         self.gdb.b("rot13")
+
         # The breakpoint should be hit exactly 2 times.
         for _ in range(2):
             output = self.gdb.c()
@@ -615,7 +617,7 @@ class MulticoreRunAllHaltOne(GdbTest):
         time.sleep(1)
         self.gdb.p("buf", fmt="")
 
-class StepTest(GdbTest):
+class StepTest(GdbSingleHartTest):
     compile_args = ("programs/step.S", )
 
     def setup(self):
@@ -634,7 +636,7 @@ class StepTest(GdbTest):
             pc = self.gdb.p("$pc")
             assertEqual("%x" % (pc - main_address), "%x" % expected)
 
-class TriggerTest(GdbTest):
+class TriggerTest(GdbSingleHartTest):
     compile_args = ("programs/trigger.S", )
     def setup(self):
         self.gdb.load()
@@ -753,7 +755,7 @@ class TriggerDmode(TriggerTest):
         assertIn("clear_triggers", output)
         self.check_triggers((1<<6) | (1<<0), 0xfeedac00)
 
-class RegsTest(GdbTest):
+class RegsTest(GdbSingleHartTest):
     compile_args = ("programs/regs.S", )
     def setup(self):
         self.gdb.load()
@@ -834,12 +836,17 @@ class DownloadTest(GdbTest):
 
     def test(self):
         self.gdb.load()
-        self.gdb.command("b _exit")
+        # Some hart will get there first! Let them race in RTOS mode.
+        for hart in self.target.harts:
+            self.gdb.select_hart(hart)
+            self.gdb.p("$pc=_start")
+            self.gdb.command("b _exit")
+
         self.gdb.c()
         assertEqual(self.gdb.p("status"), self.crc)
         os.unlink(self.download_c.name)
 
-#class MprvTest(GdbTest):
+#class MprvTest(GdbSingleHartTest):
 #    compile_args = ("programs/mprv.S", )
 #    def setup(self):
 #        self.gdb.load()
@@ -852,7 +859,7 @@ class DownloadTest(GdbTest):
 #        output = self.gdb.command("p/x *(int*)(((char*)&data)-0x80000000)")
 #        assertIn("0xbead", output)
 
-class PrivTest(GdbTest):
+class PrivTest(GdbSingleHartTest):
     compile_args = ("programs/priv.S", )
     def setup(self):
         # pylint: disable=attribute-defined-outside-init