[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.
This commit is contained in:
parent
e42e5e4d0f
commit
c7dddaa89f
|
|
@ -11,6 +11,7 @@ class TestGDBRemoteClient(GDBRemoteTestBase):
|
|||
def readRegisters(self):
|
||||
return '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
|
||||
|
||||
@skipIfReproducer # Packet log is not populated during replay.
|
||||
def test_connect(self):
|
||||
"""Test connecting to a remote gdb server"""
|
||||
target = self.createTarget("a.yaml")
|
||||
|
|
@ -68,11 +69,12 @@ class TestGDBRemoteClient(GDBRemoteTestBase):
|
|||
None, 0, True, error)
|
||||
self.assertEquals("'A' packet returned an error: 71", error.GetCString())
|
||||
|
||||
@skipIfReproducer # Packet log is not populated during replay.
|
||||
def test_read_registers_using_g_packets(self):
|
||||
"""Test reading registers using 'g' packets (default behavior)"""
|
||||
self.dbg.HandleCommand(
|
||||
"settings set plugin.process.gdb-remote.use-g-packet-for-reading true")
|
||||
self.addTearDownHook(lambda:
|
||||
self.addTearDownHook(lambda:
|
||||
self.runCmd("settings set plugin.process.gdb-remote.use-g-packet-for-reading false"))
|
||||
self.server.responder = self.gPacketResponder()
|
||||
target = self.createTarget("a.yaml")
|
||||
|
|
@ -85,6 +87,7 @@ class TestGDBRemoteClient(GDBRemoteTestBase):
|
|||
self.assertEquals(
|
||||
0, len([p for p in self.server.responder.packetLog if p.startswith("p")]))
|
||||
|
||||
@skipIfReproducer # Packet log is not populated during replay.
|
||||
def test_read_registers_using_p_packets(self):
|
||||
"""Test reading registers using 'p' packets"""
|
||||
self.dbg.HandleCommand(
|
||||
|
|
@ -97,6 +100,7 @@ class TestGDBRemoteClient(GDBRemoteTestBase):
|
|||
self.assertGreater(
|
||||
len([p for p in self.server.responder.packetLog if p.startswith("p")]), 0)
|
||||
|
||||
@skipIfReproducer # Packet log is not populated during replay.
|
||||
def test_write_registers_using_P_packets(self):
|
||||
"""Test writing registers using 'P' packets (default behavior)"""
|
||||
self.server.responder = self.gPacketResponder()
|
||||
|
|
@ -109,6 +113,7 @@ class TestGDBRemoteClient(GDBRemoteTestBase):
|
|||
self.assertGreater(
|
||||
len([p for p in self.server.responder.packetLog if p.startswith("P")]), 0)
|
||||
|
||||
@skipIfReproducer # Packet log is not populated during replay.
|
||||
def test_write_registers_using_G_packets(self):
|
||||
"""Test writing registers using 'G' packets"""
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ class TestGDBRemoteLoad(GDBRemoteTestBase):
|
|||
self.assertTrue(address.IsValid())
|
||||
self.assertEqual(".data", address.GetSection().GetName())
|
||||
|
||||
@skipIfReproducer # Packet log is not populated during replay.
|
||||
def test_ram_load(self):
|
||||
"""Test loading an object file to a target's ram"""
|
||||
target = self.createTarget("a.yaml")
|
||||
|
|
@ -28,6 +29,7 @@ class TestGDBRemoteLoad(GDBRemoteTestBase):
|
|||
])
|
||||
|
||||
@skipIfXmlSupportMissing
|
||||
@skipIfReproducer # Packet log is not populated during replay.
|
||||
def test_flash_load(self):
|
||||
"""Test loading an object file to a target's flash memory"""
|
||||
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ class TestJLink6Armv7RegisterDefinition(GDBRemoteTestBase):
|
|||
## the J-Link accepts a register write packet with just the GPRs
|
||||
## defined.
|
||||
def writeRegisters(self, registers_hex):
|
||||
# Check that lldb returns the full 704 hex-byte register context,
|
||||
# Check that lldb returns the full 704 hex-byte register context,
|
||||
# or the 136 hex-byte general purpose register reg ctx.
|
||||
if len(registers_hex) != 704 and len(register_hex) != 136:
|
||||
return "E06"
|
||||
|
|
@ -141,7 +141,7 @@ class TestJLink6Armv7RegisterDefinition(GDBRemoteTestBase):
|
|||
|
||||
def qfThreadInfo(self):
|
||||
return "mdead"
|
||||
|
||||
|
||||
def qC(self):
|
||||
return ""
|
||||
|
||||
|
|
@ -184,13 +184,15 @@ class TestJLink6Armv7RegisterDefinition(GDBRemoteTestBase):
|
|||
err = msp_valobj.GetError()
|
||||
self.assertTrue(err.Fail(), "lldb should not be able to fetch the msp register")
|
||||
|
||||
val = b'\x11\x22\x33\x44'
|
||||
error = lldb.SBError()
|
||||
data = lldb.SBData()
|
||||
data.SetData(error, val, lldb.eByteOrderBig, 4)
|
||||
self.assertEqual(r1_valobj.SetData(data, error), True)
|
||||
self.assertTrue(error.Success())
|
||||
# Reproducers don't support SetData (yet) because it takes a void*.
|
||||
if not configuration.is_reproducer():
|
||||
val = b'\x11\x22\x33\x44'
|
||||
error = lldb.SBError()
|
||||
data = lldb.SBData()
|
||||
data.SetData(error, val, lldb.eByteOrderBig, 4)
|
||||
self.assertEqual(r1_valobj.SetData(data, error), True)
|
||||
self.assertTrue(error.Success())
|
||||
|
||||
r1_valobj = process.GetThreadAtIndex(0).GetFrameAtIndex(0).FindRegister("r1")
|
||||
self.assertEqual(r1_valobj.GetValueAsUnsigned(), 0x11223344)
|
||||
r1_valobj = process.GetThreadAtIndex(0).GetFrameAtIndex(0).FindRegister("r1")
|
||||
self.assertEqual(r1_valobj.GetValueAsUnsigned(), 0x11223344)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue