[lldb][Windows] Fix memory region base addresses when a range is split
Previously we recorded AllocationBase as the base address of the region we get from VirtualQueryEx. However, this is the base of the allocation, which can later be split into more regions. So you got stuff like: [0x00007fff377c0000-0x00007fff377c1000) r-- PECOFF header [0x00007fff377c0000-0x00007fff37840000) r-x .text [0x00007fff377c0000-0x00007fff37870000) r-- .rdata Where all the base addresses were the same. Instead, use BaseAddress as the base of the region. So we get: [0x00007fff377c0000-0x00007fff377c1000) r-- PECOFF header [0x00007fff377c1000-0x00007fff37840000) r-x .text [0x00007fff37840000-0x00007fff37870000) r-- .rdata https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-memory_basic_information The added test checks for any overlapping regions which means if we get the base or size wrong it'll fail. This logic applies to any OS so the test isn't restricted to Windows. Reviewed By: labath Differential Revision: https://reviews.llvm.org/D129272
Loading
Please sign in to comment