scripts: runner: add xtensa.py, with debug support
This is debug only, not debugserver.
Signed-off-by: Marti Bolivar <marti.bolivar@linaro.org>
diff --git a/scripts/support/runner/__init__.py b/scripts/support/runner/__init__.py
index 35a2bde..665e2a5 100644
--- a/scripts/support/runner/__init__.py
+++ b/scripts/support/runner/__init__.py
@@ -19,5 +19,6 @@
from . import nrfjprog
from . import openocd
from . import pyocd
+from . import xtensa
__all__ = ['ZephyrBinaryRunner']
diff --git a/scripts/support/runner/xtensa.py b/scripts/support/runner/xtensa.py
new file mode 100644
index 0000000..c86d2a2
--- /dev/null
+++ b/scripts/support/runner/xtensa.py
@@ -0,0 +1,44 @@
+# Copyright (c) 2017 Linaro Limited.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+'''Runner for debugging with xt-gdb.'''
+
+from os import path
+
+from .core import ZephyrBinaryRunner, get_env_or_bail
+
+
+class XtensaBinaryRunner(ZephyrBinaryRunner):
+ '''Runner front-end for xt-gdb.'''
+
+ def __init__(self, gdb, elf_name, debug=False):
+ super(XtensaBinaryRunner, self).__init__(debug=debug)
+ self.gdb_cmd = [gdb]
+ self.elf_name = elf_name
+
+ def replaces_shell_script(shell_script, command):
+ return command == 'debug' and shell_script == 'xt-gdb.sh'
+
+ def create_from_env(command, debug):
+ '''Create runner from environment.
+
+ Required:
+
+ - XCC_TOOLS: path to Xtensa tools
+ - O: build output directory
+ - KERNEL_ELF_NAME: zephyr kernel binary in ELF format
+ '''
+ xt_gdb = path.join(get_env_or_bail('XCC_TOOLS'), 'bin', 'xt-gdb')
+ elf_name = path.join(get_env_or_bail('O'),
+ get_env_or_bail('KERNEL_ELF_NAME'))
+
+ return XtensaBinaryRunner(xt_gdb, elf_name)
+
+ def run(self, command, **kwargs):
+ if command != 'debug':
+ raise ValueError('Only debug is supported')
+
+ gdb_cmd = (self.gdb_cmd + [self.elf_name])
+
+ self.check_call(gdb_cmd)