test_gdb.py 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  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 TestGdbHostOnly9x(BaseGdb):
  76. config = \
  77. infra.basetest.MINIMAL_CONFIG + \
  78. """
  79. BR2_arm=y
  80. BR2_TOOLCHAIN_EXTERNAL=y
  81. BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
  82. BR2_PACKAGE_HOST_GDB=y
  83. BR2_GDB_VERSION_9_2=y
  84. """
  85. def test_run(self):
  86. self.verify_host_gdb()
  87. class TestGdbHostGdbserver9x(BaseGdb):
  88. config = \
  89. """
  90. BR2_arm=y
  91. BR2_TOOLCHAIN_EXTERNAL=y
  92. BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
  93. BR2_PACKAGE_HOST_GDB=y
  94. BR2_GDB_VERSION_9_2=y
  95. BR2_PACKAGE_GDB=y
  96. BR2_TARGET_ROOTFS_CPIO=y
  97. # BR2_TARGET_ROOTFS_TAR is not set
  98. """
  99. def test_run(self):
  100. self.verify_host_gdb()
  101. self.boot()
  102. self.verify_gdbserver()
  103. class TestGdbHostGdbTarget9x(BaseGdb):
  104. config = \
  105. """
  106. BR2_arm=y
  107. BR2_TOOLCHAIN_EXTERNAL=y
  108. BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
  109. BR2_PACKAGE_HOST_GDB=y
  110. BR2_GDB_VERSION_9_2=y
  111. BR2_PACKAGE_GDB=y
  112. BR2_PACKAGE_GDB_DEBUGGER=y
  113. BR2_TARGET_ROOTFS_CPIO=y
  114. # BR2_TARGET_ROOTFS_TAR is not set
  115. """
  116. def test_run(self):
  117. self.verify_host_gdb()
  118. self.boot()
  119. self.verify_gdb()
  120. class TestGdbHostOnly11x(BaseGdb):
  121. config = \
  122. infra.basetest.MINIMAL_CONFIG + \
  123. """
  124. BR2_arm=y
  125. BR2_TOOLCHAIN_EXTERNAL=y
  126. BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
  127. BR2_PACKAGE_HOST_GDB=y
  128. BR2_GDB_VERSION_11=y
  129. """
  130. def test_run(self):
  131. self.verify_host_gdb()
  132. class TestGdbHostGdbserver11x(BaseGdb):
  133. config = \
  134. """
  135. BR2_arm=y
  136. BR2_TOOLCHAIN_EXTERNAL=y
  137. BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
  138. BR2_PACKAGE_HOST_GDB=y
  139. BR2_GDB_VERSION_11=y
  140. BR2_PACKAGE_GDB=y
  141. BR2_TARGET_ROOTFS_CPIO=y
  142. # BR2_TARGET_ROOTFS_TAR is not set
  143. """
  144. def test_run(self):
  145. self.verify_host_gdb()
  146. self.boot()
  147. self.verify_gdbserver()
  148. class TestGdbHostGdbTarget11x(BaseGdb):
  149. config = \
  150. """
  151. BR2_arm=y
  152. BR2_TOOLCHAIN_EXTERNAL=y
  153. BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
  154. BR2_PACKAGE_HOST_GDB=y
  155. BR2_GDB_VERSION_11=y
  156. BR2_PACKAGE_GDB=y
  157. BR2_PACKAGE_GDB_DEBUGGER=y
  158. BR2_TARGET_ROOTFS_CPIO=y
  159. # BR2_TARGET_ROOTFS_TAR is not set
  160. """
  161. def test_run(self):
  162. self.verify_host_gdb()
  163. self.boot()
  164. self.verify_gdb()
  165. class TestGdbArc(BaseGdb):
  166. config = \
  167. """
  168. BR2_arcle=y
  169. BR2_archs4x_rel31=y
  170. BR2_TOOLCHAIN_EXTERNAL=y
  171. BR2_PACKAGE_HOST_GDB=y
  172. BR2_PACKAGE_GDB=y
  173. BR2_PACKAGE_GDB_SERVER=y
  174. BR2_PACKAGE_GDB_DEBUGGER=y
  175. """
  176. def test_run(self):
  177. self.verify_host_gdb("arc-linux")