|
| 1 | +""" |
| 2 | +Check that lldb falls back to default register layouts when the remote provides |
| 3 | +no target XML. |
| 4 | +
|
| 5 | +GPRS are passed to the responder to create register data to send back to lldb. |
| 6 | +Registers in SUPPL are virtual registers based on those general ones. The tests |
| 7 | +pass __file__ to FileCheck so any prefixes in this Python file will be checked. |
| 8 | +""" |
| 9 | + |
1 | 10 | import lldb
|
2 | 11 | from lldbsuite.test.lldbtest import *
|
3 | 12 | from lldbsuite.test.decorators import *
|
|
6 | 15 |
|
7 | 16 | import binascii
|
8 | 17 |
|
9 |
| - |
10 |
| -class TestGDBServerTargetXML(GDBRemoteTestBase): |
| 18 | +class MyResponder(MockGDBServerResponder): |
11 | 19 | @staticmethod
|
12 | 20 | def filecheck_to_blob(fc):
|
13 | 21 | for l in fc.strip().splitlines():
|
14 | 22 | val = l.split("0x")[1]
|
15 | 23 | yield binascii.b2a_hex(bytes(reversed(binascii.a2b_hex(val)))).decode()
|
16 | 24 |
|
| 25 | + def __init__(self, reg_data, halt_reason): |
| 26 | + super().__init__() |
| 27 | + self.reg_data = "".join(self.filecheck_to_blob(reg_data)) |
| 28 | + self.halt_reason = halt_reason |
| 29 | + |
| 30 | + def readRegister(self, regnum): |
| 31 | + return "" |
| 32 | + |
| 33 | + def readRegisters(self): |
| 34 | + return self.reg_data |
| 35 | + |
| 36 | + def haltReason(self): |
| 37 | + return self.halt_reason |
| 38 | + |
| 39 | + |
| 40 | +class TestGDBServerTargetXML(GDBRemoteTestBase): |
17 | 41 | @skipIfRemote
|
18 | 42 | @skipIfLLVMTargetMissing("X86")
|
19 | 43 | def test_x86_64_regs(self):
|
@@ -100,19 +124,10 @@ def test_x86_64_regs(self):
|
100 | 124 | CHECK-AMD64-DAG: r15l = 0xf1
|
101 | 125 | """
|
102 | 126 |
|
103 |
| - class MyResponder(MockGDBServerResponder): |
104 |
| - reg_data = "".join(self.filecheck_to_blob(GPRS)) |
105 |
| - |
106 |
| - def readRegister(self, regnum): |
107 |
| - return "" |
108 |
| - |
109 |
| - def readRegisters(self): |
110 |
| - return self.reg_data |
111 |
| - |
112 |
| - def haltReason(self): |
113 |
| - return "T02thread:1ff0d;threads:1ff0d;thread-pcs:000000010001bc00;07:0102030405060708;10:1112131415161718;" |
114 |
| - |
115 |
| - self.server.responder = MyResponder() |
| 127 | + self.server.responder = MyResponder( |
| 128 | + GPRS, |
| 129 | + "T02thread:1ff0d;threads:1ff0d;thread-pcs:000000010001bc00;07:0102030405060708;10:1112131415161718;", |
| 130 | + ) |
116 | 131 |
|
117 | 132 | target = self.createTarget("basic_eh_frame.yaml")
|
118 | 133 | process = self.connect(target)
|
@@ -216,19 +231,10 @@ def test_aarch64_regs(self):
|
216 | 231 | CHECK-AARCH64-DAG: w31 = 0x23242526
|
217 | 232 | """
|
218 | 233 |
|
219 |
| - class MyResponder(MockGDBServerResponder): |
220 |
| - reg_data = "".join(self.filecheck_to_blob(GPRS)) |
221 |
| - |
222 |
| - def readRegister(self, regnum): |
223 |
| - return "" |
224 |
| - |
225 |
| - def readRegisters(self): |
226 |
| - return self.reg_data |
227 |
| - |
228 |
| - def haltReason(self): |
229 |
| - return "T02thread:1ff0d;threads:1ff0d;thread-pcs:000000010001bc00;07:0102030405060708;10:1112131415161718;" |
230 |
| - |
231 |
| - self.server.responder = MyResponder() |
| 234 | + self.server.responder = MyResponder( |
| 235 | + GPRS, |
| 236 | + "T02thread:1ff0d;threads:1ff0d;thread-pcs:000000010001bc00;07:0102030405060708;10:1112131415161718;", |
| 237 | + ) |
232 | 238 |
|
233 | 239 | target = self.createTarget("basic_eh_frame-aarch64.yaml")
|
234 | 240 | process = self.connect(target)
|
@@ -300,19 +306,10 @@ def test_i386_regs(self):
|
300 | 306 | CHECK-I386-DAG: dil = 0x71
|
301 | 307 | """
|
302 | 308 |
|
303 |
| - class MyResponder(MockGDBServerResponder): |
304 |
| - reg_data = "".join(self.filecheck_to_blob(GPRS)) |
305 |
| - |
306 |
| - def readRegister(self, regnum): |
307 |
| - return "" |
308 |
| - |
309 |
| - def readRegisters(self): |
310 |
| - return self.reg_data |
311 |
| - |
312 |
| - def haltReason(self): |
313 |
| - return "T02thread:1ff0d;threads:1ff0d;thread-pcs:000000010001bc00;07:0102030405060708;10:1112131415161718;" |
314 |
| - |
315 |
| - self.server.responder = MyResponder() |
| 309 | + self.server.responder = MyResponder( |
| 310 | + GPRS, |
| 311 | + "T02thread:1ff0d;threads:1ff0d;thread-pcs:000000010001bc00;07:0102030405060708;10:1112131415161718;", |
| 312 | + ) |
316 | 313 |
|
317 | 314 | target = self.createTarget("basic_eh_frame-i386.yaml")
|
318 | 315 | process = self.connect(target)
|
|
0 commit comments