brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · cb357a2 Raw
44 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 TestGdbClientMemoryRegions(GDBRemoteTestBase):9    def test(self):10        """11        Test handling of overflowing memory regions. In particular, make sure12        they don't trigger an infinite loop.13        """14 15        class MyResponder(MockGDBServerResponder):16            def qHostInfo(self):17                return "ptrsize:8;endian:little;"18 19            def qMemoryRegionInfo(self, addr):20                if addr == 0:21                    return "start:0;size:8000000000000000;permissions:rw;"22                if addr == 0x8000000000000000:23                    return "start:8000000000000000;size:8000000000000000;permissions:r;"24 25        self.runCmd("log enable gdb-remote packets")26        self.runCmd("log enable lldb temp")27        self.server.responder = MyResponder()28        target = self.dbg.CreateTarget("")29        process = self.connect(target)30 31        regions = process.GetMemoryRegions()32        self.assertEqual(regions.GetSize(), 2)33 34        region = lldb.SBMemoryRegionInfo()35        self.assertTrue(regions.GetMemoryRegionAtIndex(0, region))36        self.assertEqual(region.GetRegionBase(), 0)37        self.assertEqual(region.GetRegionEnd(), 0x8000000000000000)38        self.assertTrue(region.IsWritable())39 40        self.assertTrue(regions.GetMemoryRegionAtIndex(1, region))41        self.assertEqual(region.GetRegionBase(), 0x8000000000000000)42        self.assertEqual(region.GetRegionEnd(), 0xFFFFFFFFFFFFFFFF)43        self.assertFalse(region.IsWritable())44