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