xref: /OK3568_Linux_fs/buildroot/support/testing/tests/package/test_gdb.py (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1import os
2import infra.basetest
3
4
5class BaseGdb(infra.basetest.BRTest):
6    def verify_host_gdb(self, prefix="arm-linux"):
7        cmd = ["host/bin/%s-gdb" % prefix, "--version"]
8        # We don't check the return value, as it automatically raises
9        # an exception if the command returns with a non-zero value
10        infra.run_cmd_on_host(self.builddir, cmd)
11
12    def boot(self):
13        img = os.path.join(self.builddir, "images", "rootfs.cpio")
14        self.emulator.boot(arch="armv5",
15                           kernel="builtin",
16                           options=["-initrd", img,
17                                    "-net", "nic",
18                                    "-net", "user"])
19        self.emulator.login()
20
21    def verify_gdbserver(self):
22        cmd = "gdbserver --version"
23        self.assertRunOk(cmd)
24
25    def verify_gdb(self):
26        cmd = "gdb --version"
27        self.assertRunOk(cmd)
28
29
30class TestGdbHostOnlyDefault(BaseGdb):
31    config = \
32        infra.basetest.MINIMAL_CONFIG + \
33        """
34        BR2_arm=y
35        BR2_TOOLCHAIN_EXTERNAL=y
36        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
37        BR2_PACKAGE_HOST_GDB=y
38        """
39
40    def test_run(self):
41        self.verify_host_gdb()
42
43
44class TestGdbHostOnlyAllFeatures(BaseGdb):
45    config = \
46        infra.basetest.MINIMAL_CONFIG + \
47        """
48        BR2_arm=y
49        BR2_TOOLCHAIN_EXTERNAL=y
50        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
51        BR2_PACKAGE_HOST_GDB=y
52        BR2_PACKAGE_HOST_GDB_TUI=y
53        BR2_PACKAGE_HOST_GDB_PYTHON3=y
54        BR2_PACKAGE_HOST_GDB_SIM=y
55        """
56
57    def test_run(self):
58        self.verify_host_gdb()
59
60
61class TestGdbserverOnly(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_TARGET_ROOTFS_CPIO=y
69        # BR2_TARGET_ROOTFS_TAR is not set
70        """
71
72    def test_run(self):
73        self.boot()
74        self.verify_gdbserver()
75
76
77class TestGdbFullTarget(BaseGdb):
78    config = \
79        """
80        BR2_arm=y
81        BR2_TOOLCHAIN_EXTERNAL=y
82        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
83        BR2_PACKAGE_GDB=y
84        BR2_PACKAGE_GDB_DEBUGGER=y
85        BR2_TARGET_ROOTFS_CPIO=y
86        # BR2_TARGET_ROOTFS_TAR is not set
87        """
88
89    def test_run(self):
90        self.boot()
91        self.verify_gdb()
92
93
94class TestGdbHostOnly9x(BaseGdb):
95    config = \
96        infra.basetest.MINIMAL_CONFIG + \
97        """
98        BR2_arm=y
99        BR2_TOOLCHAIN_EXTERNAL=y
100        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
101        BR2_PACKAGE_HOST_GDB=y
102        BR2_GDB_VERSION_9_2=y
103        """
104
105    def test_run(self):
106        self.verify_host_gdb()
107
108
109class TestGdbHostGdbserver9x(BaseGdb):
110    config = \
111        """
112        BR2_arm=y
113        BR2_TOOLCHAIN_EXTERNAL=y
114        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
115        BR2_PACKAGE_HOST_GDB=y
116        BR2_GDB_VERSION_9_2=y
117        BR2_PACKAGE_GDB=y
118        BR2_TARGET_ROOTFS_CPIO=y
119        # BR2_TARGET_ROOTFS_TAR is not set
120        """
121
122    def test_run(self):
123        self.verify_host_gdb()
124        self.boot()
125        self.verify_gdbserver()
126
127
128class TestGdbHostGdbTarget9x(BaseGdb):
129    config = \
130        """
131        BR2_arm=y
132        BR2_TOOLCHAIN_EXTERNAL=y
133        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
134        BR2_PACKAGE_HOST_GDB=y
135        BR2_GDB_VERSION_9_2=y
136        BR2_PACKAGE_GDB=y
137        BR2_PACKAGE_GDB_DEBUGGER=y
138        BR2_TARGET_ROOTFS_CPIO=y
139        # BR2_TARGET_ROOTFS_TAR is not set
140        """
141
142    def test_run(self):
143        self.verify_host_gdb()
144        self.boot()
145        self.verify_gdb()
146
147
148class TestGdbHostOnly11x(BaseGdb):
149    config = \
150        infra.basetest.MINIMAL_CONFIG + \
151        """
152        BR2_arm=y
153        BR2_TOOLCHAIN_EXTERNAL=y
154        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
155        BR2_PACKAGE_HOST_GDB=y
156        BR2_GDB_VERSION_11=y
157        """
158
159    def test_run(self):
160        self.verify_host_gdb()
161
162
163class TestGdbHostGdbserver11x(BaseGdb):
164    config = \
165        """
166        BR2_arm=y
167        BR2_TOOLCHAIN_EXTERNAL=y
168        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
169        BR2_PACKAGE_HOST_GDB=y
170        BR2_GDB_VERSION_11=y
171        BR2_PACKAGE_GDB=y
172        BR2_TARGET_ROOTFS_CPIO=y
173        # BR2_TARGET_ROOTFS_TAR is not set
174        """
175
176    def test_run(self):
177        self.verify_host_gdb()
178        self.boot()
179        self.verify_gdbserver()
180
181
182class TestGdbHostGdbTarget11x(BaseGdb):
183    config = \
184        """
185        BR2_arm=y
186        BR2_TOOLCHAIN_EXTERNAL=y
187        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
188        BR2_PACKAGE_HOST_GDB=y
189        BR2_GDB_VERSION_11=y
190        BR2_PACKAGE_GDB=y
191        BR2_PACKAGE_GDB_DEBUGGER=y
192        BR2_TARGET_ROOTFS_CPIO=y
193        # BR2_TARGET_ROOTFS_TAR is not set
194        """
195
196    def test_run(self):
197        self.verify_host_gdb()
198        self.boot()
199        self.verify_gdb()
200
201
202class TestGdbArc(BaseGdb):
203    config = \
204        """
205        BR2_arcle=y
206        BR2_archs4x_rel31=y
207        BR2_TOOLCHAIN_EXTERNAL=y
208        BR2_PACKAGE_HOST_GDB=y
209        BR2_PACKAGE_GDB=y
210        BR2_PACKAGE_GDB_SERVER=y
211        BR2_PACKAGE_GDB_DEBUGGER=y
212        """
213
214    def test_run(self):
215        self.verify_host_gdb("arc-linux")
216