aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Newsome <tim@sifive.com>2022-10-10 10:34:39 -0700
committerGitHub <noreply@github.com>2022-10-10 10:34:39 -0700
commit774246fda3d80108243b5ad1cda0068add3d38aa (patch)
tree2a8649caa7c83189705cc2003cdf28e64c1caa78
parent828c5c714ca0b1f44f57764bdc6d728cbd3da028 (diff)
parenta0e34c70e16e219c84bb15723d48a72065a5829e (diff)
downloadriscv-tests-774246fda3d80108243b5ad1cda0068add3d38aa.zip
riscv-tests-774246fda3d80108243b5ad1cda0068add3d38aa.tar.gz
riscv-tests-774246fda3d80108243b5ad1cda0068add3d38aa.tar.bz2
Merge pull request #417 from riscv-software-src/debug_server
debug: Add --debug_server arg to open gdb on OpenOCD
-rw-r--r--debug/targets.py6
-rw-r--r--debug/testlib.py11
2 files changed, 14 insertions, 3 deletions
diff --git a/debug/targets.py b/debug/targets.py
index 504a550..b2ed01b 100644
--- a/debug/targets.py
+++ b/debug/targets.py
@@ -136,6 +136,7 @@ class Target:
self.directory = os.path.dirname(path)
self.server_cmd = parsed.server_cmd
self.sim_cmd = parsed.sim_cmd
+ self.debug_server = parsed.debug_server
self.temporary_binary = None
self.compiler_supports_v = True
Target.isolate = parsed.isolate
@@ -166,7 +167,8 @@ class Target:
return testlib.Openocd(server_cmd=self.server_cmd,
config=self.openocd_config_path,
timeout=self.server_timeout_sec,
- freertos=test.freertos())
+ freertos=test.freertos(),
+ debug_openocd=self.debug_server)
def do_compile(self, hart, *sources):
binary_name = (
@@ -237,6 +239,8 @@ def add_target_options(parser):
"simulation)", default="spike")
parser.add_argument("--server_cmd",
help="The command to use to start the debug server (e.g. OpenOCD)")
+ parser.add_argument("--debug_server", action="store_true",
+ help="Open gdb in a separate terminal on the debug server")
xlen_group = parser.add_mutually_exclusive_group()
xlen_group.add_argument("--32", action="store_const", const=32,
diff --git a/debug/testlib.py b/debug/testlib.py
index bbca9fe..67f2e5b 100644
--- a/debug/testlib.py
+++ b/debug/testlib.py
@@ -293,8 +293,9 @@ class Openocd:
logname = logfile.name
def __init__(self, server_cmd=None, config=None, debug=False, timeout=60,
- freertos=False):
+ freertos=False, debug_openocd=False):
self.timeout = timeout
+ self.debug_openocd = debug_openocd
if server_cmd:
cmd = shlex.split(server_cmd)
@@ -387,7 +388,7 @@ class Openocd:
self.gdb_ports.append(int(m.group(1)))
if "telnet server disabled" in line:
- return process
+ break
if not messaged and time.time() - start > 1:
messaged = True
@@ -396,6 +397,12 @@ class Openocd:
raise Exception("Timed out waiting for OpenOCD to "
"listen for gdb")
+ if self.debug_openocd:
+ # pylint: disable=consider-using-with
+ self.debugger = subprocess.Popen(["gnome-terminal", "-e",
+ f"gdb --pid={process.pid}"])
+ return process
+
except Exception:
print_log(Openocd.logname)
raise