brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · 81dcb54 Raw
56 lines · python
1import lldb2from lldbsuite.support import seven3from lldbsuite.test.lldbtest import *4from lldbsuite.test.decorators import *5from lldbsuite.test.gdbclientutils import *6from lldbsuite.test.lldbgdbclient import GDBRemoteTestBase7 8 9class TestReadMemory(GDBRemoteTestBase):10    def test_x_with_prefix(self):11        class MyResponder(MockGDBServerResponder):12            def qSupported(self, client_features):13                # binary-upload+ indicates we use the gdb style of x packets14                return super().qSupported(client_features) + ";binary-upload+"15 16            def x(self, addr, length):17                return "bfoobar" if addr == 0x1000 else "E01"18 19        self.server.responder = MyResponder()20        target = self.dbg.CreateTargetWithFileAndTargetTriple("", "x86_64-pc-linux")21        process = self.connect(target)22 23        error = lldb.SBError()24        self.assertEqual(b"foobar", process.ReadMemory(0x1000, 10, error))25 26    def test_x_bare(self):27        class MyResponder(MockGDBServerResponder):28            def x(self, addr, length):29                # The OK response indicates we use the old lldb style.30                if addr == 0 and length == 0:31                    return "OK"32                return "foobar" if addr == 0x1000 else "E01"33 34        self.server.responder = MyResponder()35        target = self.dbg.CreateTargetWithFileAndTargetTriple("", "x86_64-pc-linux")36        process = self.connect(target)37 38        error = lldb.SBError()39        self.assertEqual(b"foobar", process.ReadMemory(0x1000, 10, error))40 41    def test_m_fallback(self):42        class MyResponder(MockGDBServerResponder):43            def x(self, addr, length):44                # If `x` is unsupported, we should fall back to `m`.45                return ""46 47            def readMemory(self, addr, length):48                return seven.hexlify("foobar") if addr == 0x1000 else "E01"49 50        self.server.responder = MyResponder()51        target = self.dbg.CreateTargetWithFileAndTargetTriple("", "x86_64-pc-linux")52        process = self.connect(target)53 54        error = lldb.SBError()55        self.assertEqual(b"foobar", process.ReadMemory(0x1000, 10, error))56