test_gdb.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. import os
  2. import infra.basetest
  3. class BaseGdb(infra.basetest.BRTest):
  4. def verify_host_gdb(self, prefix="arm-linux"):
  5. cmd = ["host/bin/%s-gdb" % prefix, "--version"]
  6. # We don't check the return value, as it automatically raises
  7. # an exception if the command returns with a non-zero value
  8. infra.run_cmd_on_host(self.builddir, cmd)
  9. def boot(self):
  10. img = os.path.join(self.builddir, "images", "rootfs.cpio")
  11. self.emulator.boot(arch="armv5",
  12. kernel="builtin",
  13. options=["-initrd", img,
  14. "-net", "nic",
  15. "-net", "user"])
  16. self.emulator.login()
  17. def verify_gdbserver(self):
  18. cmd = "gdbserver --version"
  19. self.assertRunOk(cmd)
  20. def verify_gdb(self):
  21. cmd = "gdb --version"
  22. self.assertRunOk(cmd)
  23. class TestGdbHostOnlyDefault(BaseGdb):
  24. config = \
  25. infra.basetest.MINIMAL_CONFIG + \
  26. """
  27. BR2_arm=y
  28. BR2_TOOLCHAIN_EXTERNAL=y
  29. BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
  30. BR2_PACKAGE_HOST_GDB=y
  31. """
  32. def test_run(self):
  33. self.verify_host_gdb()
  34. class TestGdbHostOnlyAllFeatures(BaseGdb):
  35. config = \
  36. infra.basetest.MINIMAL_CONFIG + \
  37. """
  38. BR2_arm=y
  39. BR2_TOOLCHAIN_EXTERNAL=y
  40. BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
  41. BR2_PACKAGE_HOST_GDB=y
  42. BR2_PACKAGE_HOST_GDB_TUI=y
  43. BR2_PACKAGE_HOST_GDB_PYTHON3=y
  44. BR2_PACKAGE_HOST_GDB_SIM=y
  45. """
  46. def test_run(self):
  47. self.verify_host_gdb()
  48. class TestGdbserverOnly(BaseGdb):
  49. config = \
  50. """
  51. BR2_arm=y
  52. BR2_TOOLCHAIN_EXTERNAL=y
  53. BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
  54. BR2_PACKAGE_GDB=y
  55. BR2_TARGET_ROOTFS_CPIO=y
  56. # BR2_TARGET_ROOTFS_TAR is not set
  57. """
  58. def test_run(self):
  59. self.boot()
  60. self.verify_gdbserver()
  61. class TestGdbFullTarget(BaseGdb):
  62. config = \
  63. """
  64. BR2_arm=y
  65. BR2_TOOLCHAIN_EXTERNAL=y
  66. BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
  67. BR2_PACKAGE_GDB=y
  68. BR2_PACKAGE_GDB_DEBUGGER=y
  69. BR2_TARGET_ROOTFS_CPIO=y
  70. # BR2_TARGET_ROOTFS_TAR is not set
  71. """
  72. def test_run(self):
  73. self.boot()
  74. self.verify_gdb()
  75. class TestGdbArc(BaseGdb):
  76. config = \
  77. """
  78. BR2_arcle=y
  79. BR2_archs38=y
  80. BR2_TOOLCHAIN_EXTERNAL=y
  81. BR2_PACKAGE_HOST_GDB=y
  82. BR2_PACKAGE_GDB=y
  83. BR2_PACKAGE_GDB_SERVER=y
  84. BR2_PACKAGE_GDB_DEBUGGER=y
  85. """
  86. def test_run(self):
  87. self.verify_host_gdb("arc-linux")