mirror of
https://github.com/intel/llvm.git
synced 2026-01-21 04:14:03 +08:00
[lldb] Fix SBMemoryRegionInfoListExtensions iter to yield unique refe… (#144815)
This commit is contained in:
@@ -9,8 +9,8 @@
|
||||
'''Iterate over all the memory regions in a lldb.SBMemoryRegionInfoList object.'''
|
||||
import lldb
|
||||
size = self.GetSize()
|
||||
region = lldb.SBMemoryRegionInfo()
|
||||
for i in range(size):
|
||||
region = lldb.SBMemoryRegionInfo()
|
||||
self.GetMemoryRegionAtIndex(i, region)
|
||||
yield region
|
||||
%}
|
||||
|
||||
@@ -154,14 +154,35 @@ class FindInMemoryTestCase(TestBase):
|
||||
self.assertEqual(addr, lldb.LLDB_INVALID_ADDRESS)
|
||||
|
||||
def test_memory_info_list_iterable(self):
|
||||
"""Make sure the SBMemoryRegionInfoList is iterable"""
|
||||
"""Make sure the SBMemoryRegionInfoList is iterable and each yielded object is unique"""
|
||||
self.assertTrue(self.process, PROCESS_IS_VALID)
|
||||
self.assertState(self.process.GetState(), lldb.eStateStopped, PROCESS_STOPPED)
|
||||
|
||||
info_list = self.process.GetMemoryRegions()
|
||||
self.assertTrue(info_list.GetSize() > 0)
|
||||
|
||||
collected_info = []
|
||||
try:
|
||||
for info in info_list:
|
||||
pass
|
||||
collected_info.append(info)
|
||||
except Exception:
|
||||
self.fail("SBMemoryRegionInfoList is not iterable")
|
||||
|
||||
for i in range(len(collected_info)):
|
||||
region = lldb.SBMemoryRegionInfo()
|
||||
info_list.GetMemoryRegionAtIndex(i, region)
|
||||
|
||||
self.assertEqual(
|
||||
collected_info[i],
|
||||
region,
|
||||
f"items {i}: iterator data should match index access data",
|
||||
)
|
||||
|
||||
self.assertTrue(
|
||||
len(collected_info) >= 2, "Test requires at least 2 memory regions"
|
||||
)
|
||||
self.assertNotEqual(
|
||||
collected_info[0].GetRegionBase(),
|
||||
collected_info[1].GetRegionBase(),
|
||||
"Different items should have different base addresses",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user