From: Jonas Devlieghere Date: Tue, 19 May 2020 20:07:05 +0000 (-0700) Subject: [lldb/Reproducers] Update GDB remote client tests for passive replay X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=c7dddaa89ff17d2b191bd70de5a01712590b317d;p=android-x86%2Fexternal-llvm-project.git [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. --- diff --git a/lldb/test/API/functionalities/gdb_remote_client/TestGDBRemoteClient.py b/lldb/test/API/functionalities/gdb_remote_client/TestGDBRemoteClient.py index 0fe3d6290f4..053183b5b5b 100644 --- a/lldb/test/API/functionalities/gdb_remote_client/TestGDBRemoteClient.py +++ b/lldb/test/API/functionalities/gdb_remote_client/TestGDBRemoteClient.py @@ -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""" diff --git a/lldb/test/API/functionalities/gdb_remote_client/TestGDBRemoteLoad.py b/lldb/test/API/functionalities/gdb_remote_client/TestGDBRemoteLoad.py index 59a11d45737..f8cff3900f4 100644 --- a/lldb/test/API/functionalities/gdb_remote_client/TestGDBRemoteLoad.py +++ b/lldb/test/API/functionalities/gdb_remote_client/TestGDBRemoteLoad.py @@ -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""" diff --git a/lldb/test/API/functionalities/gdb_remote_client/TestJLink6Armv7RegisterDefinition.py b/lldb/test/API/functionalities/gdb_remote_client/TestJLink6Armv7RegisterDefinition.py index f0113fd9908..754ed44ce8d 100644 --- a/lldb/test/API/functionalities/gdb_remote_client/TestJLink6Armv7RegisterDefinition.py +++ b/lldb/test/API/functionalities/gdb_remote_client/TestJLink6Armv7RegisterDefinition.py @@ -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()) - - r1_valobj = process.GetThreadAtIndex(0).GetFrameAtIndex(0).FindRegister("r1") - self.assertEqual(r1_valobj.GetValueAsUnsigned(), 0x11223344) + # 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)