debug: Fixing the non-RTOS behavior for DownloadTest
authorMegan Wachs <megan@sifive.com>
Mon, 14 May 2018 15:46:03 +0000 (08:46 -0700)
committerMegan Wachs <megan@sifive.com>
Mon, 14 May 2018 15:46:03 +0000 (08:46 -0700)
debug/gdbserver.py

index adf179da6f0ea789eaf7daa3e4b925faa4341584..0c3cee4b3328fd12bb0c045482923c2c532a51d4 100755 (executable)
@@ -835,13 +835,22 @@ class DownloadTest(GdbTest):
         self.gdb.command("file %s" % self.binary)
 
     def test(self):
-        self.gdb.load()
-        # 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")
-
+        # 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.c()
         assertEqual(self.gdb.p("status"), self.crc)
         os.unlink(self.download_c.name)