Merge remote-tracking branch 'origin/downloadtest' into debug-tests-more-single
authorMegan Wachs <megan@sifive.com>
Mon, 14 May 2018 23:04:10 +0000 (16:04 -0700)
committerMegan Wachs <megan@sifive.com>
Mon, 14 May 2018 23:04:10 +0000 (16:04 -0700)
debug/gdbserver.py
debug/testlib.py

index 4472bdfbfe5ccb1bf4f6bbd012a08fc835cda18f..be89d19157b07789be13bad5a105091b393569c5 100755 (executable)
@@ -830,25 +830,12 @@ class DownloadTest(GdbTest):
 
         self.binary = self.target.compile(self.hart, self.download_c.name,
                 "programs/checksum.c")
-        self.gdb.command("file %s" % self.binary)
+        self.gdb.global_command("file %s" % self.binary)
 
     def test(self):
-        # Some hart will compete the CRC calculation first!
-        # Let them race in RTOS mode.
-        # In non-RTOS mode, only one hart will continue.
-        # This loop will fail because the others won't know 
-        # about '_start'. But if that is the case, they
-        # won't run on the `continue` either, so we don't really care.
-        try:
-            self.gdb.load()
-            for hart in self.target.harts:
-                self.gdb.select_hart(hart)
-                self.gdb.p("$pc=_start")
-        except ValueError: #invalid literal for int() with base 0: 'No symbol table is loaded.  Use the "file" command.'
-            pass
-        finally:
-            
-        self.gdb.select_hart(self.hart)
+        self.gdb.load()
+        self.parkOtherHarts()
+        self.gdb.command("b _exit")
         self.gdb.c()
         assertEqual(self.gdb.p("status"), self.crc)
         os.unlink(self.download_c.name)
index 09baf1bec6bb522fb7d85631f2112c61dd1270de..fb5bee33b1284b36ecafe918821a979ad1cf738c 100644 (file)
@@ -861,10 +861,8 @@ class GdbTest(BaseTest):
         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:
@@ -873,6 +871,11 @@ class GdbSingleHartTest(GdbTest):
 
         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: