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