| Index: util/win/process_info_test.cc
|
| diff --git a/util/win/process_info_test.cc b/util/win/process_info_test.cc
|
| index 71269a5989b1ed52f587cc4e7f3a4914d5095147..ce04323aaae4747a2c5fe1faa8ceab3f67a42b16 100644
|
| --- a/util/win/process_info_test.cc
|
| +++ b/util/win/process_info_test.cc
|
| @@ -14,7 +14,6 @@
|
|
|
| #include "util/win/process_info.h"
|
|
|
| -#include <imagehlp.h>
|
| #include <intrin.h>
|
| #include <wchar.h>
|
|
|
| @@ -34,15 +33,6 @@ namespace {
|
|
|
| const wchar_t kNtdllName[] = L"\\ntdll.dll";
|
|
|
| -time_t GetTimestampForModule(HMODULE module) {
|
| - char filename[MAX_PATH];
|
| - // `char` and GetModuleFileNameA because ImageLoad is ANSI only.
|
| - if (!GetModuleFileNameA(module, filename, arraysize(filename)))
|
| - return 0;
|
| - LOADED_IMAGE* loaded_image = ImageLoad(filename, nullptr);
|
| - return loaded_image->FileHeader->FileHeader.TimeDateStamp;
|
| -}
|
| -
|
| bool IsProcessWow64(HANDLE process_handle) {
|
| static decltype(IsWow64Process)* is_wow64_process =
|
| reinterpret_cast<decltype(IsWow64Process)*>(
|
| @@ -61,15 +51,15 @@ void VerifyAddressInInCodePage(const ProcessInfo& process_info,
|
| WinVMAddress code_address) {
|
| // Make sure the child code address is an code page address with the right
|
| // information.
|
| - const std::vector<ProcessInfo::MemoryInfo>& memory_info =
|
| - process_info.MemoryInformation();
|
| + const std::vector<MINIDUMP_MEMORY_INFO>& memory_info =
|
| + process_info.MemoryInfo();
|
| bool found_region = false;
|
| for (const auto& mi : memory_info) {
|
| - if (mi.base_address <= code_address &&
|
| - mi.base_address + mi.region_size > code_address) {
|
| - EXPECT_EQ(MEM_COMMIT, mi.state);
|
| - EXPECT_EQ(PAGE_EXECUTE_READ, mi.protect);
|
| - EXPECT_EQ(MEM_IMAGE, mi.type);
|
| + if (mi.BaseAddress <= code_address &&
|
| + mi.BaseAddress + mi.RegionSize > code_address) {
|
| + EXPECT_EQ(MEM_COMMIT, mi.State);
|
| + EXPECT_EQ(PAGE_EXECUTE_READ, mi.Protect);
|
| + EXPECT_EQ(MEM_IMAGE, mi.Type);
|
| EXPECT_FALSE(found_region);
|
| found_region = true;
|
| }
|
| @@ -119,7 +109,7 @@ TEST(ProcessInfo, Self) {
|
| EXPECT_GT(modules[1].size, 0);
|
|
|
| EXPECT_EQ(modules[0].timestamp,
|
| - GetTimestampForModule(GetModuleHandle(nullptr)));
|
| + GetTimestampForLoadedLibrary(GetModuleHandle(nullptr)));
|
| // System modules are forced to particular stamps and the file header values
|
| // don't match the on-disk times. Just make sure we got some data here.
|
| EXPECT_GT(modules[1].timestamp, 0);
|
| @@ -201,13 +191,13 @@ TEST(ProcessInfo, OtherProcessWOW64) {
|
| #endif // ARCH_CPU_64_BITS
|
|
|
| TEST(ProcessInfo, AccessibleRangesNone) {
|
| - std::vector<ProcessInfo::MemoryInfo> memory_info;
|
| - MEMORY_BASIC_INFORMATION mbi = {0};
|
| + std::vector<MINIDUMP_MEMORY_INFO> memory_info;
|
| + MINIDUMP_MEMORY_INFO mmi = {0};
|
|
|
| - mbi.BaseAddress = 0;
|
| - mbi.RegionSize = 10;
|
| - mbi.State = MEM_FREE;
|
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi));
|
| + mmi.BaseAddress = 0;
|
| + mmi.RegionSize = 10;
|
| + mmi.State = MEM_FREE;
|
| + memory_info.push_back(mmi);
|
|
|
| std::vector<CheckedRange<WinVMAddress, WinVMSize>> result =
|
| GetReadableRangesOfMemoryMap(CheckedRange<WinVMAddress, WinVMSize>(2, 4),
|
| @@ -217,13 +207,13 @@ TEST(ProcessInfo, AccessibleRangesNone) {
|
| }
|
|
|
| TEST(ProcessInfo, AccessibleRangesOneInside) {
|
| - std::vector<ProcessInfo::MemoryInfo> memory_info;
|
| - MEMORY_BASIC_INFORMATION mbi = {0};
|
| + std::vector<MINIDUMP_MEMORY_INFO> memory_info;
|
| + MINIDUMP_MEMORY_INFO mmi = {0};
|
|
|
| - mbi.BaseAddress = 0;
|
| - mbi.RegionSize = 10;
|
| - mbi.State = MEM_COMMIT;
|
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi));
|
| + mmi.BaseAddress = 0;
|
| + mmi.RegionSize = 10;
|
| + mmi.State = MEM_COMMIT;
|
| + memory_info.push_back(mmi);
|
|
|
| std::vector<CheckedRange<WinVMAddress, WinVMSize>> result =
|
| GetReadableRangesOfMemoryMap(CheckedRange<WinVMAddress, WinVMSize>(2, 4),
|
| @@ -235,18 +225,18 @@ TEST(ProcessInfo, AccessibleRangesOneInside) {
|
| }
|
|
|
| TEST(ProcessInfo, AccessibleRangesOneTruncatedSize) {
|
| - std::vector<ProcessInfo::MemoryInfo> memory_info;
|
| - MEMORY_BASIC_INFORMATION mbi = {0};
|
| + std::vector<MINIDUMP_MEMORY_INFO> memory_info;
|
| + MINIDUMP_MEMORY_INFO mmi = {0};
|
|
|
| - mbi.BaseAddress = 0;
|
| - mbi.RegionSize = 10;
|
| - mbi.State = MEM_COMMIT;
|
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi));
|
| + mmi.BaseAddress = 0;
|
| + mmi.RegionSize = 10;
|
| + mmi.State = MEM_COMMIT;
|
| + memory_info.push_back(mmi);
|
|
|
| - mbi.BaseAddress = reinterpret_cast<void*>(10);
|
| - mbi.RegionSize = 20;
|
| - mbi.State = MEM_FREE;
|
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi));
|
| + mmi.BaseAddress = 10;
|
| + mmi.RegionSize = 20;
|
| + mmi.State = MEM_FREE;
|
| + memory_info.push_back(mmi);
|
|
|
| std::vector<CheckedRange<WinVMAddress, WinVMSize>> result =
|
| GetReadableRangesOfMemoryMap(CheckedRange<WinVMAddress, WinVMSize>(5, 10),
|
| @@ -258,18 +248,18 @@ TEST(ProcessInfo, AccessibleRangesOneTruncatedSize) {
|
| }
|
|
|
| TEST(ProcessInfo, AccessibleRangesOneMovedStart) {
|
| - std::vector<ProcessInfo::MemoryInfo> memory_info;
|
| - MEMORY_BASIC_INFORMATION mbi = {0};
|
| + std::vector<MINIDUMP_MEMORY_INFO> memory_info;
|
| + MINIDUMP_MEMORY_INFO mmi = {0};
|
|
|
| - mbi.BaseAddress = 0;
|
| - mbi.RegionSize = 10;
|
| - mbi.State = MEM_FREE;
|
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi));
|
| + mmi.BaseAddress = 0;
|
| + mmi.RegionSize = 10;
|
| + mmi.State = MEM_FREE;
|
| + memory_info.push_back(mmi);
|
|
|
| - mbi.BaseAddress = reinterpret_cast<void*>(10);
|
| - mbi.RegionSize = 20;
|
| - mbi.State = MEM_COMMIT;
|
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi));
|
| + mmi.BaseAddress = 10;
|
| + mmi.RegionSize = 20;
|
| + mmi.State = MEM_COMMIT;
|
| + memory_info.push_back(mmi);
|
|
|
| std::vector<CheckedRange<WinVMAddress, WinVMSize>> result =
|
| GetReadableRangesOfMemoryMap(CheckedRange<WinVMAddress, WinVMSize>(5, 10),
|
| @@ -281,18 +271,18 @@ TEST(ProcessInfo, AccessibleRangesOneMovedStart) {
|
| }
|
|
|
| TEST(ProcessInfo, ReserveIsInaccessible) {
|
| - std::vector<ProcessInfo::MemoryInfo> memory_info;
|
| - MEMORY_BASIC_INFORMATION mbi = {0};
|
| + std::vector<MINIDUMP_MEMORY_INFO> memory_info;
|
| + MINIDUMP_MEMORY_INFO mmi = {0};
|
|
|
| - mbi.BaseAddress = 0;
|
| - mbi.RegionSize = 10;
|
| - mbi.State = MEM_RESERVE;
|
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi));
|
| + mmi.BaseAddress = 0;
|
| + mmi.RegionSize = 10;
|
| + mmi.State = MEM_RESERVE;
|
| + memory_info.push_back(mmi);
|
|
|
| - mbi.BaseAddress = reinterpret_cast<void*>(10);
|
| - mbi.RegionSize = 20;
|
| - mbi.State = MEM_COMMIT;
|
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi));
|
| + mmi.BaseAddress = 10;
|
| + mmi.RegionSize = 20;
|
| + mmi.State = MEM_COMMIT;
|
| + memory_info.push_back(mmi);
|
|
|
| std::vector<CheckedRange<WinVMAddress, WinVMSize>> result =
|
| GetReadableRangesOfMemoryMap(CheckedRange<WinVMAddress, WinVMSize>(5, 10),
|
| @@ -304,20 +294,20 @@ TEST(ProcessInfo, ReserveIsInaccessible) {
|
| }
|
|
|
| TEST(ProcessInfo, PageGuardIsInaccessible) {
|
| - std::vector<ProcessInfo::MemoryInfo> memory_info;
|
| - MEMORY_BASIC_INFORMATION mbi = {0};
|
| + std::vector<MINIDUMP_MEMORY_INFO> memory_info;
|
| + MINIDUMP_MEMORY_INFO mmi = {0};
|
|
|
| - mbi.BaseAddress = 0;
|
| - mbi.RegionSize = 10;
|
| - mbi.State = MEM_COMMIT;
|
| - mbi.Protect = PAGE_GUARD;
|
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi));
|
| + mmi.BaseAddress = 0;
|
| + mmi.RegionSize = 10;
|
| + mmi.State = MEM_COMMIT;
|
| + mmi.Protect = PAGE_GUARD;
|
| + memory_info.push_back(mmi);
|
|
|
| - mbi.BaseAddress = reinterpret_cast<void*>(10);
|
| - mbi.RegionSize = 20;
|
| - mbi.State = MEM_COMMIT;
|
| - mbi.Protect = 0;
|
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi));
|
| + mmi.BaseAddress = 10;
|
| + mmi.RegionSize = 20;
|
| + mmi.State = MEM_COMMIT;
|
| + mmi.Protect = 0;
|
| + memory_info.push_back(mmi);
|
|
|
| std::vector<CheckedRange<WinVMAddress, WinVMSize>> result =
|
| GetReadableRangesOfMemoryMap(CheckedRange<WinVMAddress, WinVMSize>(5, 10),
|
| @@ -329,20 +319,20 @@ TEST(ProcessInfo, PageGuardIsInaccessible) {
|
| }
|
|
|
| TEST(ProcessInfo, PageNoAccessIsInaccessible) {
|
| - std::vector<ProcessInfo::MemoryInfo> memory_info;
|
| - MEMORY_BASIC_INFORMATION mbi = {0};
|
| + std::vector<MINIDUMP_MEMORY_INFO> memory_info;
|
| + MINIDUMP_MEMORY_INFO mmi = {0};
|
|
|
| - mbi.BaseAddress = 0;
|
| - mbi.RegionSize = 10;
|
| - mbi.State = MEM_COMMIT;
|
| - mbi.Protect = PAGE_NOACCESS;
|
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi));
|
| + mmi.BaseAddress = 0;
|
| + mmi.RegionSize = 10;
|
| + mmi.State = MEM_COMMIT;
|
| + mmi.Protect = PAGE_NOACCESS;
|
| + memory_info.push_back(mmi);
|
|
|
| - mbi.BaseAddress = reinterpret_cast<void*>(10);
|
| - mbi.RegionSize = 20;
|
| - mbi.State = MEM_COMMIT;
|
| - mbi.Protect = 0;
|
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi));
|
| + mmi.BaseAddress = 10;
|
| + mmi.RegionSize = 20;
|
| + mmi.State = MEM_COMMIT;
|
| + mmi.Protect = 0;
|
| + memory_info.push_back(mmi);
|
|
|
| std::vector<CheckedRange<WinVMAddress, WinVMSize>> result =
|
| GetReadableRangesOfMemoryMap(CheckedRange<WinVMAddress, WinVMSize>(5, 10),
|
| @@ -354,23 +344,23 @@ TEST(ProcessInfo, PageNoAccessIsInaccessible) {
|
| }
|
|
|
| TEST(ProcessInfo, AccessibleRangesCoalesced) {
|
| - std::vector<ProcessInfo::MemoryInfo> memory_info;
|
| - MEMORY_BASIC_INFORMATION mbi = {0};
|
| + std::vector<MINIDUMP_MEMORY_INFO> memory_info;
|
| + MINIDUMP_MEMORY_INFO mmi = {0};
|
|
|
| - mbi.BaseAddress = 0;
|
| - mbi.RegionSize = 10;
|
| - mbi.State = MEM_FREE;
|
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi));
|
| + mmi.BaseAddress = 0;
|
| + mmi.RegionSize = 10;
|
| + mmi.State = MEM_FREE;
|
| + memory_info.push_back(mmi);
|
|
|
| - mbi.BaseAddress = reinterpret_cast<void*>(10);
|
| - mbi.RegionSize = 2;
|
| - mbi.State = MEM_COMMIT;
|
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi));
|
| + mmi.BaseAddress = 10;
|
| + mmi.RegionSize = 2;
|
| + mmi.State = MEM_COMMIT;
|
| + memory_info.push_back(mmi);
|
|
|
| - mbi.BaseAddress = reinterpret_cast<void*>(12);
|
| - mbi.RegionSize = 5;
|
| - mbi.State = MEM_COMMIT;
|
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi));
|
| + mmi.BaseAddress = 12;
|
| + mmi.RegionSize = 5;
|
| + mmi.State = MEM_COMMIT;
|
| + memory_info.push_back(mmi);
|
|
|
| std::vector<CheckedRange<WinVMAddress, WinVMSize>> result =
|
| GetReadableRangesOfMemoryMap(CheckedRange<WinVMAddress, WinVMSize>(11, 4),
|
| @@ -382,23 +372,23 @@ TEST(ProcessInfo, AccessibleRangesCoalesced) {
|
| }
|
|
|
| TEST(ProcessInfo, AccessibleRangesMiddleUnavailable) {
|
| - std::vector<ProcessInfo::MemoryInfo> memory_info;
|
| - MEMORY_BASIC_INFORMATION mbi = {0};
|
| + std::vector<MINIDUMP_MEMORY_INFO> memory_info;
|
| + MINIDUMP_MEMORY_INFO mmi = {0};
|
|
|
| - mbi.BaseAddress = 0;
|
| - mbi.RegionSize = 10;
|
| - mbi.State = MEM_COMMIT;
|
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi));
|
| + mmi.BaseAddress = 0;
|
| + mmi.RegionSize = 10;
|
| + mmi.State = MEM_COMMIT;
|
| + memory_info.push_back(mmi);
|
|
|
| - mbi.BaseAddress = reinterpret_cast<void*>(10);
|
| - mbi.RegionSize = 5;
|
| - mbi.State = MEM_FREE;
|
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi));
|
| + mmi.BaseAddress = 10;
|
| + mmi.RegionSize = 5;
|
| + mmi.State = MEM_FREE;
|
| + memory_info.push_back(mmi);
|
|
|
| - mbi.BaseAddress = reinterpret_cast<void*>(15);
|
| - mbi.RegionSize = 100;
|
| - mbi.State = MEM_COMMIT;
|
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi));
|
| + mmi.BaseAddress = 15;
|
| + mmi.RegionSize = 100;
|
| + mmi.State = MEM_COMMIT;
|
| + memory_info.push_back(mmi);
|
|
|
| std::vector<CheckedRange<WinVMAddress, WinVMSize>> result =
|
| GetReadableRangesOfMemoryMap(CheckedRange<WinVMAddress, WinVMSize>(5, 45),
|
| @@ -412,13 +402,13 @@ TEST(ProcessInfo, AccessibleRangesMiddleUnavailable) {
|
| }
|
|
|
| TEST(ProcessInfo, RequestedBeforeMap) {
|
| - std::vector<ProcessInfo::MemoryInfo> memory_info;
|
| - MEMORY_BASIC_INFORMATION mbi = {0};
|
| + std::vector<MINIDUMP_MEMORY_INFO> memory_info;
|
| + MINIDUMP_MEMORY_INFO mmi = {0};
|
|
|
| - mbi.BaseAddress = reinterpret_cast<void*>(10);
|
| - mbi.RegionSize = 10;
|
| - mbi.State = MEM_COMMIT;
|
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi));
|
| + mmi.BaseAddress = 10;
|
| + mmi.RegionSize = 10;
|
| + mmi.State = MEM_COMMIT;
|
| + memory_info.push_back(mmi);
|
|
|
| std::vector<CheckedRange<WinVMAddress, WinVMSize>> result =
|
| GetReadableRangesOfMemoryMap(CheckedRange<WinVMAddress, WinVMSize>(5, 10),
|
| @@ -430,13 +420,13 @@ TEST(ProcessInfo, RequestedBeforeMap) {
|
| }
|
|
|
| TEST(ProcessInfo, RequestedAfterMap) {
|
| - std::vector<ProcessInfo::MemoryInfo> memory_info;
|
| - MEMORY_BASIC_INFORMATION mbi = {0};
|
| + std::vector<MINIDUMP_MEMORY_INFO> memory_info;
|
| + MINIDUMP_MEMORY_INFO mmi = {0};
|
|
|
| - mbi.BaseAddress = reinterpret_cast<void*>(10);
|
| - mbi.RegionSize = 10;
|
| - mbi.State = MEM_COMMIT;
|
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi));
|
| + mmi.BaseAddress = 10;
|
| + mmi.RegionSize = 10;
|
| + mmi.State = MEM_COMMIT;
|
| + memory_info.push_back(mmi);
|
|
|
| std::vector<CheckedRange<WinVMAddress, WinVMSize>> result =
|
| GetReadableRangesOfMemoryMap(
|
|
|