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