1*e69a3d18SMichał Górnyfrom __future__ import print_function 2*e69a3d18SMichał Górnyimport lldb 3*e69a3d18SMichał Górnyfrom lldbsuite.test.lldbtest import * 4*e69a3d18SMichał Górnyfrom lldbsuite.test.decorators import * 5*e69a3d18SMichał Górnyfrom lldbsuite.test.gdbclientutils import * 6*e69a3d18SMichał Górnyfrom lldbsuite.test.lldbgdbclient import GDBRemoteTestBase 7*e69a3d18SMichał Górny 8*e69a3d18SMichał Górnyimport binascii 9*e69a3d18SMichał Górny 10*e69a3d18SMichał Górny 11*e69a3d18SMichał Górnyclass TestGDBServerTargetXML(GDBRemoteTestBase): 12*e69a3d18SMichał Górny 13*e69a3d18SMichał Górny @staticmethod 14*e69a3d18SMichał Górny def filecheck_to_blob(fc): 15*e69a3d18SMichał Górny for l in fc.strip().splitlines(): 16*e69a3d18SMichał Górny val = l.split('0x')[1] 17*e69a3d18SMichał Górny yield binascii.b2a_hex(bytes(reversed(binascii.a2b_hex(val)))).decode() 18*e69a3d18SMichał Górny 19*e69a3d18SMichał Górny @skipIfRemote 20*e69a3d18SMichał Górny @skipIfLLVMTargetMissing("X86") 21*e69a3d18SMichał Górny def test_x86_64_regs(self): 22*e69a3d18SMichał Górny """Test grabbing various x86_64 registers from gdbserver.""" 23*e69a3d18SMichał Górny 24*e69a3d18SMichał Górny GPRS = ''' 25*e69a3d18SMichał GórnyCHECK-AMD64-DAG: rax = 0x0807060504030201 26*e69a3d18SMichał GórnyCHECK-AMD64-DAG: rbx = 0x1817161514131211 27*e69a3d18SMichał GórnyCHECK-AMD64-DAG: rcx = 0x2827262524232221 28*e69a3d18SMichał GórnyCHECK-AMD64-DAG: rdx = 0x3837363534333231 29*e69a3d18SMichał GórnyCHECK-AMD64-DAG: rsi = 0x4847464544434241 30*e69a3d18SMichał GórnyCHECK-AMD64-DAG: rdi = 0x5857565554535251 31*e69a3d18SMichał GórnyCHECK-AMD64-DAG: rbp = 0x6867666564636261 32*e69a3d18SMichał GórnyCHECK-AMD64-DAG: rsp = 0x7877767574737271 33*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r8 = 0x8887868584838281 34*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r9 = 0x9897969594939291 35*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r10 = 0xa8a7a6a5a4a3a2a1 36*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r11 = 0xb8b7b6b5b4b3b2b1 37*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r12 = 0xc8c7c6c5c4c3c2c1 38*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r13 = 0xd8d7d6d5d4d3d2d1 39*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r14 = 0xe8e7e6e5e4e3e2e1 40*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r15 = 0xf8f7f6f5f4f3f2f1 41*e69a3d18SMichał GórnyCHECK-AMD64-DAG: rip = 0x100f0e0d0c0b0a09 42*e69a3d18SMichał GórnyCHECK-AMD64-DAG: eflags = 0x1c1b1a19 43*e69a3d18SMichał GórnyCHECK-AMD64-DAG: cs = 0x2c2b2a29 44*e69a3d18SMichał GórnyCHECK-AMD64-DAG: ss = 0x3c3b3a39 45*e69a3d18SMichał Górny''' 46*e69a3d18SMichał Górny 47*e69a3d18SMichał Górny SUPPL = ''' 48*e69a3d18SMichał GórnyCHECK-AMD64-DAG: eax = 0x04030201 49*e69a3d18SMichał GórnyCHECK-AMD64-DAG: ebx = 0x14131211 50*e69a3d18SMichał GórnyCHECK-AMD64-DAG: ecx = 0x24232221 51*e69a3d18SMichał GórnyCHECK-AMD64-DAG: edx = 0x34333231 52*e69a3d18SMichał GórnyCHECK-AMD64-DAG: esi = 0x44434241 53*e69a3d18SMichał GórnyCHECK-AMD64-DAG: edi = 0x54535251 54*e69a3d18SMichał GórnyCHECK-AMD64-DAG: ebp = 0x64636261 55*e69a3d18SMichał GórnyCHECK-AMD64-DAG: esp = 0x74737271 56*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r8d = 0x84838281 57*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r9d = 0x94939291 58*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r10d = 0xa4a3a2a1 59*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r11d = 0xb4b3b2b1 60*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r12d = 0xc4c3c2c1 61*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r13d = 0xd4d3d2d1 62*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r14d = 0xe4e3e2e1 63*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r15d = 0xf4f3f2f1 64*e69a3d18SMichał Górny 65*e69a3d18SMichał GórnyCHECK-AMD64-DAG: ax = 0x0201 66*e69a3d18SMichał GórnyCHECK-AMD64-DAG: bx = 0x1211 67*e69a3d18SMichał GórnyCHECK-AMD64-DAG: cx = 0x2221 68*e69a3d18SMichał GórnyCHECK-AMD64-DAG: dx = 0x3231 69*e69a3d18SMichał GórnyCHECK-AMD64-DAG: si = 0x4241 70*e69a3d18SMichał GórnyCHECK-AMD64-DAG: di = 0x5251 71*e69a3d18SMichał GórnyCHECK-AMD64-DAG: bp = 0x6261 72*e69a3d18SMichał GórnyCHECK-AMD64-DAG: sp = 0x7271 73*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r8w = 0x8281 74*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r9w = 0x9291 75*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r10w = 0xa2a1 76*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r11w = 0xb2b1 77*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r12w = 0xc2c1 78*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r13w = 0xd2d1 79*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r14w = 0xe2e1 80*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r15w = 0xf2f1 81*e69a3d18SMichał Górny 82*e69a3d18SMichał GórnyCHECK-AMD64-DAG: ah = 0x02 83*e69a3d18SMichał GórnyCHECK-AMD64-DAG: bh = 0x12 84*e69a3d18SMichał GórnyCHECK-AMD64-DAG: ch = 0x22 85*e69a3d18SMichał GórnyCHECK-AMD64-DAG: dh = 0x32 86*e69a3d18SMichał Górny 87*e69a3d18SMichał GórnyCHECK-AMD64-DAG: al = 0x01 88*e69a3d18SMichał GórnyCHECK-AMD64-DAG: bl = 0x11 89*e69a3d18SMichał GórnyCHECK-AMD64-DAG: cl = 0x21 90*e69a3d18SMichał GórnyCHECK-AMD64-DAG: dl = 0x31 91*e69a3d18SMichał GórnyCHECK-AMD64-DAG: sil = 0x41 92*e69a3d18SMichał GórnyCHECK-AMD64-DAG: dil = 0x51 93*e69a3d18SMichał GórnyCHECK-AMD64-DAG: bpl = 0x61 94*e69a3d18SMichał GórnyCHECK-AMD64-DAG: spl = 0x71 95*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r8l = 0x81 96*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r9l = 0x91 97*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r10l = 0xa1 98*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r11l = 0xb1 99*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r12l = 0xc1 100*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r13l = 0xd1 101*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r14l = 0xe1 102*e69a3d18SMichał GórnyCHECK-AMD64-DAG: r15l = 0xf1 103*e69a3d18SMichał Górny''' 104*e69a3d18SMichał Górny 105*e69a3d18SMichał Górny class MyResponder(MockGDBServerResponder): 106*e69a3d18SMichał Górny reg_data = ''.join(self.filecheck_to_blob(GPRS)) 107*e69a3d18SMichał Górny 108*e69a3d18SMichał Górny def readRegister(self, regnum): 109*e69a3d18SMichał Górny return "" 110*e69a3d18SMichał Górny 111*e69a3d18SMichał Górny def readRegisters(self): 112*e69a3d18SMichał Górny return self.reg_data 113*e69a3d18SMichał Górny 114*e69a3d18SMichał Górny def haltReason(self): 115*e69a3d18SMichał Górny return "T02thread:1ff0d;threads:1ff0d;thread-pcs:000000010001bc00;07:0102030405060708;10:1112131415161718;" 116*e69a3d18SMichał Górny 117*e69a3d18SMichał Górny self.server.responder = MyResponder() 118*e69a3d18SMichał Górny 119*e69a3d18SMichał Górny target = self.createTarget("basic_eh_frame.yaml") 120*e69a3d18SMichał Górny process = self.connect(target) 121*e69a3d18SMichał Górny lldbutil.expect_state_changes(self, self.dbg.GetListener(), process, 122*e69a3d18SMichał Górny [lldb.eStateStopped]) 123*e69a3d18SMichał Górny 124*e69a3d18SMichał Górny # test all registers 125*e69a3d18SMichał Górny self.filecheck("register read --all", __file__, 126*e69a3d18SMichał Górny filecheck_options='--check-prefix=CHECK-AMD64') 127*e69a3d18SMichał Górny 128*e69a3d18SMichał Górny # test generic aliases 129*e69a3d18SMichał Górny self.match("register read arg4", 130*e69a3d18SMichał Górny ["rcx = 0x2827262524232221"]) 131*e69a3d18SMichał Górny self.match("register read arg3", 132*e69a3d18SMichał Górny ["rdx = 0x3837363534333231"]) 133*e69a3d18SMichał Górny self.match("register read arg2", 134*e69a3d18SMichał Górny ["rsi = 0x4847464544434241"]) 135*e69a3d18SMichał Górny self.match("register read arg1", 136*e69a3d18SMichał Górny ["rdi = 0x5857565554535251"]) 137*e69a3d18SMichał Górny self.match("register read fp", 138*e69a3d18SMichał Górny ["rbp = 0x6867666564636261"]) 139*e69a3d18SMichał Górny self.match("register read sp", 140*e69a3d18SMichał Górny ["rsp = 0x7877767574737271"]) 141*e69a3d18SMichał Górny self.match("register read arg5", 142*e69a3d18SMichał Górny ["r8 = 0x8887868584838281"]) 143*e69a3d18SMichał Górny self.match("register read arg6", 144*e69a3d18SMichał Górny ["r9 = 0x9897969594939291"]) 145*e69a3d18SMichał Górny self.match("register read pc", 146*e69a3d18SMichał Górny ["rip = 0x100f0e0d0c0b0a09"]) 147*e69a3d18SMichał Górny self.match("register read flags", 148*e69a3d18SMichał Górny ["eflags = 0x1c1b1a19"]) 149*e69a3d18SMichał Górny 150*e69a3d18SMichał Górny @skipIfRemote 151*e69a3d18SMichał Górny @skipIfLLVMTargetMissing("AArch64") 152*e69a3d18SMichał Górny def test_aarch64_regs(self): 153*e69a3d18SMichał Górny """Test grabbing various aarch64 registers from gdbserver.""" 154*e69a3d18SMichał Górny 155*e69a3d18SMichał Górny GPRS = ''' 156*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x0 = 0x0001020304050607 157*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x1 = 0x0102030405060708 158*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x2 = 0x0203040506070809 159*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x3 = 0x030405060708090a 160*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x4 = 0x0405060708090a0b 161*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x5 = 0x05060708090a0b0c 162*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x6 = 0x060708090a0b0c0d 163*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x7 = 0x0708090a0b0c0d0e 164*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x8 = 0x08090a0b0c0d0e0f 165*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x9 = 0x090a0b0c0d0e0f10 166*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x10 = 0x0a0b0c0d0e0f1011 167*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x11 = 0x0b0c0d0e0f101112 168*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x12 = 0x0c0d0e0f10111213 169*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x13 = 0x0d0e0f1011121314 170*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x14 = 0x0e0f101112131415 171*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x15 = 0x0f10111213141516 172*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x16 = 0x1011121314151617 173*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x17 = 0x1112131415161718 174*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x18 = 0x1213141516171819 175*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x19 = 0x131415161718191a 176*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x20 = 0x1415161718191a1b 177*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x21 = 0x15161718191a1b1c 178*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x22 = 0x161718191a1b1c1d 179*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x23 = 0x1718191a1b1c1d1e 180*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x24 = 0x18191a1b1c1d1e1f 181*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x25 = 0x191a1b1c1d1e1f20 182*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x26 = 0x1a1b1c1d1e1f2021 183*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x27 = 0x1b1c1d1e1f202122 184*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x28 = 0x1c1d1e1f20212223 185*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x29 = 0x1d1e1f2021222324 186*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: x30 = 0x1e1f202122232425 187*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: sp = 0x1f20212223242526 188*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: pc = 0x2021222324252627 189*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: cpsr = 0x21222324 190*e69a3d18SMichał Górny''' 191*e69a3d18SMichał Górny 192*e69a3d18SMichał Górny SUPPL = ''' 193*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w0 = 0x04050607 194*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w1 = 0x05060708 195*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w2 = 0x06070809 196*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w3 = 0x0708090a 197*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w4 = 0x08090a0b 198*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w5 = 0x090a0b0c 199*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w6 = 0x0a0b0c0d 200*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w7 = 0x0b0c0d0e 201*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w8 = 0x0c0d0e0f 202*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w9 = 0x0d0e0f10 203*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w10 = 0x0e0f1011 204*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w11 = 0x0f101112 205*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w12 = 0x10111213 206*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w13 = 0x11121314 207*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w14 = 0x12131415 208*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w15 = 0x13141516 209*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w16 = 0x14151617 210*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w17 = 0x15161718 211*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w18 = 0x16171819 212*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w19 = 0x1718191a 213*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w20 = 0x18191a1b 214*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w21 = 0x191a1b1c 215*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w22 = 0x1a1b1c1d 216*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w23 = 0x1b1c1d1e 217*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w24 = 0x1c1d1e1f 218*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w25 = 0x1d1e1f20 219*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w26 = 0x1e1f2021 220*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w27 = 0x1f202122 221*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w28 = 0x20212223 222*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w29 = 0x21222324 223*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w30 = 0x22232425 224*e69a3d18SMichał GórnyCHECK-AARCH64-DAG: w31 = 0x23242526 225*e69a3d18SMichał Górny''' 226*e69a3d18SMichał Górny 227*e69a3d18SMichał Górny class MyResponder(MockGDBServerResponder): 228*e69a3d18SMichał Górny reg_data = ''.join(self.filecheck_to_blob(GPRS)) 229*e69a3d18SMichał Górny 230*e69a3d18SMichał Górny def readRegister(self, regnum): 231*e69a3d18SMichał Górny return "" 232*e69a3d18SMichał Górny 233*e69a3d18SMichał Górny def readRegisters(self): 234*e69a3d18SMichał Górny return self.reg_data 235*e69a3d18SMichał Górny 236*e69a3d18SMichał Górny def haltReason(self): 237*e69a3d18SMichał Górny return "T02thread:1ff0d;threads:1ff0d;thread-pcs:000000010001bc00;07:0102030405060708;10:1112131415161718;" 238*e69a3d18SMichał Górny 239*e69a3d18SMichał Górny self.server.responder = MyResponder() 240*e69a3d18SMichał Górny 241*e69a3d18SMichał Górny target = self.createTarget("basic_eh_frame-aarch64.yaml") 242*e69a3d18SMichał Górny process = self.connect(target) 243*e69a3d18SMichał Górny lldbutil.expect_state_changes(self, self.dbg.GetListener(), process, 244*e69a3d18SMichał Górny [lldb.eStateStopped]) 245*e69a3d18SMichał Górny 246*e69a3d18SMichał Górny # test all registers 247*e69a3d18SMichał Górny self.filecheck("register read --all", __file__, 248*e69a3d18SMichał Górny filecheck_options='--check-prefix=CHECK-AARCH64') 249*e69a3d18SMichał Górny 250*e69a3d18SMichał Górny # test generic aliases 251*e69a3d18SMichał Górny self.match("register read arg1", 252*e69a3d18SMichał Górny ["x0 = 0x0001020304050607"]) 253*e69a3d18SMichał Górny self.match("register read arg2", 254*e69a3d18SMichał Górny ["x1 = 0x0102030405060708"]) 255*e69a3d18SMichał Górny self.match("register read fp", 256*e69a3d18SMichał Górny ["x29 = 0x1d1e1f2021222324"]) 257*e69a3d18SMichał Górny self.match("register read lr", 258*e69a3d18SMichał Górny ["x30 = 0x1e1f202122232425"]) 259*e69a3d18SMichał Górny self.match("register read ra", 260*e69a3d18SMichał Górny ["x30 = 0x1e1f202122232425"]) 261*e69a3d18SMichał Górny self.match("register read flags", 262*e69a3d18SMichał Górny ["cpsr = 0x21222324"]) 263*e69a3d18SMichał Górny 264*e69a3d18SMichał Górny @skipIfRemote 265*e69a3d18SMichał Górny @skipIfLLVMTargetMissing("X86") 266*e69a3d18SMichał Górny def test_i386_regs(self): 267*e69a3d18SMichał Górny """Test grabbing various i386 registers from gdbserver.""" 268*e69a3d18SMichał Górny 269*e69a3d18SMichał Górny GPRS = ''' 270*e69a3d18SMichał GórnyCHECK-I386-DAG: eax = 0x04030201 271*e69a3d18SMichał GórnyCHECK-I386-DAG: ecx = 0x14131211 272*e69a3d18SMichał GórnyCHECK-I386-DAG: edx = 0x24232221 273*e69a3d18SMichał GórnyCHECK-I386-DAG: ebx = 0x34333231 274*e69a3d18SMichał GórnyCHECK-I386-DAG: esp = 0x44434241 275*e69a3d18SMichał GórnyCHECK-I386-DAG: ebp = 0x54535251 276*e69a3d18SMichał GórnyCHECK-I386-DAG: esi = 0x64636261 277*e69a3d18SMichał GórnyCHECK-I386-DAG: edi = 0x74737271 278*e69a3d18SMichał GórnyCHECK-I386-DAG: eip = 0x84838281 279*e69a3d18SMichał GórnyCHECK-I386-DAG: eflags = 0x94939291 280*e69a3d18SMichał GórnyCHECK-I386-DAG: cs = 0xa4a3a2a1 281*e69a3d18SMichał GórnyCHECK-I386-DAG: ss = 0xb4b3b2b1 282*e69a3d18SMichał GórnyCHECK-I386-DAG: ds = 0xc4c3c2c1 283*e69a3d18SMichał GórnyCHECK-I386-DAG: es = 0xd4d3d2d1 284*e69a3d18SMichał GórnyCHECK-I386-DAG: fs = 0xe4e3e2e1 285*e69a3d18SMichał GórnyCHECK-I386-DAG: gs = 0xf4f3f2f1 286*e69a3d18SMichał Górny''' 287*e69a3d18SMichał Górny 288*e69a3d18SMichał Górny SUPPL = ''' 289*e69a3d18SMichał GórnyCHECK-I386-DAG: ax = 0x0201 290*e69a3d18SMichał GórnyCHECK-I386-DAG: cx = 0x1211 291*e69a3d18SMichał GórnyCHECK-I386-DAG: dx = 0x2221 292*e69a3d18SMichał GórnyCHECK-I386-DAG: bx = 0x3231 293*e69a3d18SMichał GórnyCHECK-I386-DAG: sp = 0x4241 294*e69a3d18SMichał GórnyCHECK-I386-DAG: bp = 0x5251 295*e69a3d18SMichał GórnyCHECK-I386-DAG: si = 0x6261 296*e69a3d18SMichał GórnyCHECK-I386-DAG: di = 0x7271 297*e69a3d18SMichał Górny 298*e69a3d18SMichał GórnyCHECK-I386-DAG: ah = 0x02 299*e69a3d18SMichał GórnyCHECK-I386-DAG: ch = 0x12 300*e69a3d18SMichał GórnyCHECK-I386-DAG: dh = 0x22 301*e69a3d18SMichał GórnyCHECK-I386-DAG: bh = 0x32 302*e69a3d18SMichał Górny 303*e69a3d18SMichał GórnyCHECK-I386-DAG: al = 0x01 304*e69a3d18SMichał GórnyCHECK-I386-DAG: cl = 0x11 305*e69a3d18SMichał GórnyCHECK-I386-DAG: dl = 0x21 306*e69a3d18SMichał GórnyCHECK-I386-DAG: bl = 0x31 307*e69a3d18SMichał GórnyCHECK-I386-DAG: spl = 0x41 308*e69a3d18SMichał GórnyCHECK-I386-DAG: bpl = 0x51 309*e69a3d18SMichał GórnyCHECK-I386-DAG: sil = 0x61 310*e69a3d18SMichał GórnyCHECK-I386-DAG: dil = 0x71 311*e69a3d18SMichał Górny''' 312*e69a3d18SMichał Górny 313*e69a3d18SMichał Górny class MyResponder(MockGDBServerResponder): 314*e69a3d18SMichał Górny reg_data = ''.join(self.filecheck_to_blob(GPRS)) 315*e69a3d18SMichał Górny 316*e69a3d18SMichał Górny def readRegister(self, regnum): 317*e69a3d18SMichał Górny return "" 318*e69a3d18SMichał Górny 319*e69a3d18SMichał Górny def readRegisters(self): 320*e69a3d18SMichał Górny return self.reg_data 321*e69a3d18SMichał Górny 322*e69a3d18SMichał Górny def haltReason(self): 323*e69a3d18SMichał Górny return "T02thread:1ff0d;threads:1ff0d;thread-pcs:000000010001bc00;07:0102030405060708;10:1112131415161718;" 324*e69a3d18SMichał Górny 325*e69a3d18SMichał Górny self.server.responder = MyResponder() 326*e69a3d18SMichał Górny 327*e69a3d18SMichał Górny target = self.createTarget("basic_eh_frame-i386.yaml") 328*e69a3d18SMichał Górny process = self.connect(target) 329*e69a3d18SMichał Górny lldbutil.expect_state_changes(self, self.dbg.GetListener(), process, 330*e69a3d18SMichał Górny [lldb.eStateStopped]) 331*e69a3d18SMichał Górny 332*e69a3d18SMichał Górny # test all registers 333*e69a3d18SMichał Górny self.filecheck("register read --all", __file__, 334*e69a3d18SMichał Górny filecheck_options='--check-prefix=CHECK-I386') 335*e69a3d18SMichał Górny 336*e69a3d18SMichał Górny # test generic aliases 337*e69a3d18SMichał Górny self.match("register read fp", 338*e69a3d18SMichał Górny ["ebp = 0x54535251"]) 339*e69a3d18SMichał Górny self.match("register read sp", 340*e69a3d18SMichał Górny ["esp = 0x44434241"]) 341*e69a3d18SMichał Górny self.match("register read pc", 342*e69a3d18SMichał Górny ["eip = 0x84838281"]) 343*e69a3d18SMichał Górny self.match("register read flags", 344*e69a3d18SMichał Górny ["eflags = 0x94939291"]) 345