diff --git a/support/testing/tests/package/test_gdb.py b/support/testing/tests/package/test_gdb.py new file mode 100644 index 0000000000..a7b0870644 --- /dev/null +++ b/support/testing/tests/package/test_gdb.py @@ -0,0 +1,215 @@ +import os +import infra.basetest + + +class BaseGdb(infra.basetest.BRTest): + def verify_host_gdb(self, prefix="arm-linux"): + cmd = ["host/bin/%s-gdb" % prefix, "--version"] + # We don't check the return value, as it automatically raises + # an exception if the command returns with a non-zero value + infra.run_cmd_on_host(self.builddir, cmd) + + def boot(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", img, + "-net", "nic", + "-net", "user"]) + self.emulator.login() + + def verify_gdbserver(self): + cmd = "gdbserver --version" + self.assertRunOk(cmd) + + def verify_gdb(self): + cmd = "gdb --version" + self.assertRunOk(cmd) + + +class TestGdbHostOnlyDefault(BaseGdb): + config = \ + infra.basetest.MINIMAL_CONFIG + \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_PACKAGE_HOST_GDB=y + """ + + def test_run(self): + self.verify_host_gdb() + + +class TestGdbHostOnlyAllFeatures(BaseGdb): + config = \ + infra.basetest.MINIMAL_CONFIG + \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_PACKAGE_HOST_GDB=y + BR2_PACKAGE_HOST_GDB_TUI=y + BR2_PACKAGE_HOST_GDB_PYTHON3=y + BR2_PACKAGE_HOST_GDB_SIM=y + """ + + def test_run(self): + self.verify_host_gdb() + + +class TestGdbserverOnly(BaseGdb): + config = \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_PACKAGE_GDB=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + self.boot() + self.verify_gdbserver() + + +class TestGdbFullTarget(BaseGdb): + config = \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_PACKAGE_GDB=y + BR2_PACKAGE_GDB_DEBUGGER=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + self.boot() + self.verify_gdb() + + +class TestGdbHostOnly9x(BaseGdb): + config = \ + infra.basetest.MINIMAL_CONFIG + \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_PACKAGE_HOST_GDB=y + BR2_GDB_VERSION_9_2=y + """ + + def test_run(self): + self.verify_host_gdb() + + +class TestGdbHostGdbserver9x(BaseGdb): + config = \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_PACKAGE_HOST_GDB=y + BR2_GDB_VERSION_9_2=y + BR2_PACKAGE_GDB=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + self.verify_host_gdb() + self.boot() + self.verify_gdbserver() + + +class TestGdbHostGdbTarget9x(BaseGdb): + config = \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_PACKAGE_HOST_GDB=y + BR2_GDB_VERSION_9_2=y + BR2_PACKAGE_GDB=y + BR2_PACKAGE_GDB_DEBUGGER=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + self.verify_host_gdb() + self.boot() + self.verify_gdb() + + +class TestGdbHostOnly11x(BaseGdb): + config = \ + infra.basetest.MINIMAL_CONFIG + \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_PACKAGE_HOST_GDB=y + BR2_GDB_VERSION_11=y + """ + + def test_run(self): + self.verify_host_gdb() + + +class TestGdbHostGdbserver11x(BaseGdb): + config = \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_PACKAGE_HOST_GDB=y + BR2_GDB_VERSION_11=y + BR2_PACKAGE_GDB=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + self.verify_host_gdb() + self.boot() + self.verify_gdbserver() + + +class TestGdbHostGdbTarget11x(BaseGdb): + config = \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y + BR2_PACKAGE_HOST_GDB=y + BR2_GDB_VERSION_11=y + BR2_PACKAGE_GDB=y + BR2_PACKAGE_GDB_DEBUGGER=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + self.verify_host_gdb() + self.boot() + self.verify_gdb() + + +class TestGdbArc(BaseGdb): + config = \ + """ + BR2_arcle=y + BR2_archs4x_rel31=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_PACKAGE_HOST_GDB=y + BR2_PACKAGE_GDB=y + BR2_PACKAGE_GDB_SERVER=y + BR2_PACKAGE_GDB_DEBUGGER=y + """ + + def test_run(self): + self.verify_host_gdb("arc-linux")