Skip to content

Commit d14ca11

Browse files
DavidSpickettAlexisPerry
authored andcommitted
[lldb][test] Refactor no target XML test
To make it more easy to check a bug later.
1 parent d993807 commit d14ca11

File tree

1 file changed

+38
-41
lines changed

1 file changed

+38
-41
lines changed

lldb/test/API/functionalities/gdb_remote_client/TestGDBServerNoTargetXML.py

Lines changed: 38 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
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+
110
import lldb
211
from lldbsuite.test.lldbtest import *
312
from lldbsuite.test.decorators import *
@@ -6,14 +15,29 @@
615

716
import binascii
817

9-
10-
class TestGDBServerTargetXML(GDBRemoteTestBase):
18+
class MyResponder(MockGDBServerResponder):
1119
@staticmethod
1220
def filecheck_to_blob(fc):
1321
for l in fc.strip().splitlines():
1422
val = l.split("0x")[1]
1523
yield binascii.b2a_hex(bytes(reversed(binascii.a2b_hex(val)))).decode()
1624

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):
1741
@skipIfRemote
1842
@skipIfLLVMTargetMissing("X86")
1943
def test_x86_64_regs(self):
@@ -100,19 +124,10 @@ def test_x86_64_regs(self):
100124
CHECK-AMD64-DAG: r15l = 0xf1
101125
"""
102126

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+
)
116131

117132
target = self.createTarget("basic_eh_frame.yaml")
118133
process = self.connect(target)
@@ -216,19 +231,10 @@ def test_aarch64_regs(self):
216231
CHECK-AARCH64-DAG: w31 = 0x23242526
217232
"""
218233

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+
)
232238

233239
target = self.createTarget("basic_eh_frame-aarch64.yaml")
234240
process = self.connect(target)
@@ -300,19 +306,10 @@ def test_i386_regs(self):
300306
CHECK-I386-DAG: dil = 0x71
301307
"""
302308

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+
)
316313

317314
target = self.createTarget("basic_eh_frame-i386.yaml")
318315
process = self.connect(target)

0 commit comments

Comments
 (0)