brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.7 KiB · d8214ae Raw
74 lines · python
1import lldb2from lldbsuite.test.lldbtest import *3from lldbsuite.test.decorators import *4from lldbsuite.test.gdbclientutils import *5from lldbsuite.test.lldbgdbclient import GDBRemoteTestBase6 7 8class TestGDBRemoteLoad(GDBRemoteTestBase):9    def test_module_load_address(self):10        """Test that setting the load address of a module uses virtual addresses"""11        target = self.createTarget("a.yaml")12        process = self.connect(target)13        module = target.GetModuleAtIndex(0)14        self.assertTrue(module.IsValid())15        self.assertTrue(target.SetModuleLoadAddress(module, 0).Success())16        address = target.ResolveLoadAddress(0x2001)17        self.assertTrue(address.IsValid())18        self.assertEqual(".data", address.GetSection().GetName())19 20    def test_ram_load(self):21        """Test loading an object file to a target's ram"""22        target = self.createTarget("a.yaml")23        process = self.connect(target)24        self.dbg.HandleCommand("target modules load -l -s0")25        self.assertPacketLogReceived(["M1000,4:c3c3c3c3", "M1004,2:3232"])26 27    @skipIfXmlSupportMissing28    def test_flash_load(self):29        """Test loading an object file to a target's flash memory"""30 31        class Responder(MockGDBServerResponder):32            def qSupported(self, client_supported):33                return "PacketSize=3fff;QStartNoAckMode+;qXfer:memory-map:read+"34 35            def qXferRead(self, obj, annex, offset, length):36                if obj == "memory-map":37                    return (38                        self.MEMORY_MAP[offset : offset + length],39                        offset + length < len(self.MEMORY_MAP),40                    )41                return None, False42 43            def other(self, packet):44                if packet[0:11] == "vFlashErase":45                    return "OK"46                if packet[0:11] == "vFlashWrite":47                    return "OK"48                if packet == "vFlashDone":49                    return "OK"50                return ""51 52            MEMORY_MAP = """<?xml version="1.0"?>53<memory-map>54  <memory type="ram" start="0x0" length="0x1000"/>55  <memory type="flash" start="0x1000" length="0x1000">56    <property name="blocksize">0x100</property>57  </memory>58  <memory type="ram" start="0x2000" length="0x1D400"/>59</memory-map>60"""61 62        self.server.responder = Responder()63        target = self.createTarget("a.yaml")64        process = self.connect(target)65        self.dbg.HandleCommand("target modules load -l -s0")66        self.assertPacketLogReceived(67            [68                "vFlashErase:1000,100",69                "vFlashWrite:1000:\xc3\xc3\xc3\xc3",70                "vFlashWrite:1004:\x32\x32",71                "vFlashDone",72            ]73        )74