Test ebreak without gdb.
[riscv-isa-sim.git] / tests / testlib.py
index 2db25491c433ed3dcdf5678e4009cd9330c6363c..4e05616390c83e47d43e7b22f461d77c0063e60b 100644 (file)
@@ -34,16 +34,26 @@ def unused_port():
     s.close()
     return port
 
-def spike(binary, halted=False):
+def spike(binary, halted=False, with_gdb=True, timeout=None):
     """Launch spike. Return tuple of its process and the port it's running on."""
-    cmd = [find_file("spike")]
+    cmd = []
+    if timeout:
+        cmd += ["timeout", str(timeout)]
+
+    cmd += [find_file("spike")]
     if halted:
         cmd.append('-H')
-    port = unused_port()
-    cmd += ['--gdb-port', str(port), 'pk', binary]
+    if with_gdb:
+        port = unused_port()
+        cmd += ['--gdb-port', str(port)]
+    cmd += ['pk', binary]
     logfile = open("spike.log", "w")
-    return subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=logfile,
-            stderr=logfile), port
+    process = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=logfile,
+            stderr=logfile)
+    if with_gdb:
+        return process, port
+    else:
+        return process
 
 class Gdb(object):
     def __init__(self):