Skip to content

Commit e8e5cb3

Browse files
JDevliegherememfrob
authored andcommitted
[lldb/Reproducers] Update GDB remote client tests for passive replay
Tests that check the state of the server don't work when replayed because the replay server replies to requests.
1 parent aaf67cb commit e8e5cb3

File tree

3 files changed

+21
-12
lines changed

3 files changed

+21
-12
lines changed

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ class gPacketResponder(MockGDBServerResponder):
1111
def readRegisters(self):
1212
return '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
1313

14+
@skipIfReproducer # Packet log is not populated during replay.
1415
def test_connect(self):
1516
"""Test connecting to a remote gdb server"""
1617
target = self.createTarget("a.yaml")
@@ -68,11 +69,12 @@ def A(self, packet):
6869
None, 0, True, error)
6970
self.assertEquals("'A' packet returned an error: 71", error.GetCString())
7071

72+
@skipIfReproducer # Packet log is not populated during replay.
7173
def test_read_registers_using_g_packets(self):
7274
"""Test reading registers using 'g' packets (default behavior)"""
7375
self.dbg.HandleCommand(
7476
"settings set plugin.process.gdb-remote.use-g-packet-for-reading true")
75-
self.addTearDownHook(lambda:
77+
self.addTearDownHook(lambda:
7678
self.runCmd("settings set plugin.process.gdb-remote.use-g-packet-for-reading false"))
7779
self.server.responder = self.gPacketResponder()
7880
target = self.createTarget("a.yaml")
@@ -85,6 +87,7 @@ def test_read_registers_using_g_packets(self):
8587
self.assertEquals(
8688
0, len([p for p in self.server.responder.packetLog if p.startswith("p")]))
8789

90+
@skipIfReproducer # Packet log is not populated during replay.
8891
def test_read_registers_using_p_packets(self):
8992
"""Test reading registers using 'p' packets"""
9093
self.dbg.HandleCommand(
@@ -97,6 +100,7 @@ def test_read_registers_using_p_packets(self):
97100
self.assertGreater(
98101
len([p for p in self.server.responder.packetLog if p.startswith("p")]), 0)
99102

103+
@skipIfReproducer # Packet log is not populated during replay.
100104
def test_write_registers_using_P_packets(self):
101105
"""Test writing registers using 'P' packets (default behavior)"""
102106
self.server.responder = self.gPacketResponder()
@@ -109,6 +113,7 @@ def test_write_registers_using_P_packets(self):
109113
self.assertGreater(
110114
len([p for p in self.server.responder.packetLog if p.startswith("P")]), 0)
111115

116+
@skipIfReproducer # Packet log is not populated during replay.
112117
def test_write_registers_using_G_packets(self):
113118
"""Test writing registers using 'G' packets"""
114119

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ def test_module_load_address(self):
1717
self.assertTrue(address.IsValid())
1818
self.assertEqual(".data", address.GetSection().GetName())
1919

20+
@skipIfReproducer # Packet log is not populated during replay.
2021
def test_ram_load(self):
2122
"""Test loading an object file to a target's ram"""
2223
target = self.createTarget("a.yaml")
@@ -28,6 +29,7 @@ def test_ram_load(self):
2829
])
2930

3031
@skipIfXmlSupportMissing
32+
@skipIfReproducer # Packet log is not populated during replay.
3133
def test_flash_load(self):
3234
"""Test loading an object file to a target's flash memory"""
3335

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

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ def readRegisters(self):
126126
## the J-Link accepts a register write packet with just the GPRs
127127
## defined.
128128
def writeRegisters(self, registers_hex):
129-
# Check that lldb returns the full 704 hex-byte register context,
129+
# Check that lldb returns the full 704 hex-byte register context,
130130
# or the 136 hex-byte general purpose register reg ctx.
131131
if len(registers_hex) != 704 and len(register_hex) != 136:
132132
return "E06"
@@ -141,7 +141,7 @@ def haltReason(self):
141141

142142
def qfThreadInfo(self):
143143
return "mdead"
144-
144+
145145
def qC(self):
146146
return ""
147147

@@ -184,13 +184,15 @@ def QListThreadsInStopReply(self):
184184
err = msp_valobj.GetError()
185185
self.assertTrue(err.Fail(), "lldb should not be able to fetch the msp register")
186186

187-
val = b'\x11\x22\x33\x44'
188-
error = lldb.SBError()
189-
data = lldb.SBData()
190-
data.SetData(error, val, lldb.eByteOrderBig, 4)
191-
self.assertEqual(r1_valobj.SetData(data, error), True)
192-
self.assertTrue(error.Success())
193-
194-
r1_valobj = process.GetThreadAtIndex(0).GetFrameAtIndex(0).FindRegister("r1")
195-
self.assertEqual(r1_valobj.GetValueAsUnsigned(), 0x11223344)
187+
# Reproducers don't support SetData (yet) because it takes a void*.
188+
if not configuration.is_reproducer():
189+
val = b'\x11\x22\x33\x44'
190+
error = lldb.SBError()
191+
data = lldb.SBData()
192+
data.SetData(error, val, lldb.eByteOrderBig, 4)
193+
self.assertEqual(r1_valobj.SetData(data, error), True)
194+
self.assertTrue(error.Success())
195+
196+
r1_valobj = process.GetThreadAtIndex(0).GetFrameAtIndex(0).FindRegister("r1")
197+
self.assertEqual(r1_valobj.GetValueAsUnsigned(), 0x11223344)
196198

0 commit comments

Comments
 (0)