Chromium Code Reviews| 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..2001f05ac83591b8d085b7ab10598f1a5ae2cc08 100644 |
| --- a/util/win/process_info_test.cc |
| +++ b/util/win/process_info_test.cc |
| @@ -14,7 +14,7 @@ |
| #include "util/win/process_info.h" |
| -#include <imagehlp.h> |
| +#include <dbghelp.h> |
| #include <intrin.h> |
| #include <wchar.h> |
| @@ -34,15 +34,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 +52,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<MEMORY_BASIC_INFORMATION64>& 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 +110,7 @@ TEST(ProcessInfo, Self) { |
| EXPECT_GT(modules[1].size, 0); |
| EXPECT_EQ(modules[0].timestamp, |
| - GetTimestampForModule(GetModuleHandle(nullptr))); |
| + GetTimestampForLoadedLibrary(GetModuleHandle(nullptr))); |
|
Mark Mentovai
2015/10/07 01:17:24
Oh, awesome!
The arguments should be flipped here
scottmg
2015/10/07 18:19:17
Some day I will write a clang machine translation
Mark Mentovai
2015/10/07 18:50:52
scottmg wrote:
scottmg
2015/10/07 19:22:30
Right, but then I have to fix all the broken code
|
| // 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 +192,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<MEMORY_BASIC_INFORMATION64> memory_info; |
| + MEMORY_BASIC_INFORMATION64 mbi = {0}; |
| mbi.BaseAddress = 0; |
| mbi.RegionSize = 10; |
| mbi.State = MEM_FREE; |
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi)); |
| + memory_info.push_back(mbi); |
| std::vector<CheckedRange<WinVMAddress, WinVMSize>> result = |
| GetReadableRangesOfMemoryMap(CheckedRange<WinVMAddress, WinVMSize>(2, 4), |
| @@ -217,13 +208,13 @@ TEST(ProcessInfo, AccessibleRangesNone) { |
| } |
| TEST(ProcessInfo, AccessibleRangesOneInside) { |
| - std::vector<ProcessInfo::MemoryInfo> memory_info; |
| - MEMORY_BASIC_INFORMATION mbi = {0}; |
| + std::vector<MEMORY_BASIC_INFORMATION64> memory_info; |
| + MEMORY_BASIC_INFORMATION64 mbi = {0}; |
| mbi.BaseAddress = 0; |
| mbi.RegionSize = 10; |
| mbi.State = MEM_COMMIT; |
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi)); |
| + memory_info.push_back(mbi); |
| std::vector<CheckedRange<WinVMAddress, WinVMSize>> result = |
| GetReadableRangesOfMemoryMap(CheckedRange<WinVMAddress, WinVMSize>(2, 4), |
| @@ -235,18 +226,18 @@ TEST(ProcessInfo, AccessibleRangesOneInside) { |
| } |
| TEST(ProcessInfo, AccessibleRangesOneTruncatedSize) { |
| - std::vector<ProcessInfo::MemoryInfo> memory_info; |
| - MEMORY_BASIC_INFORMATION mbi = {0}; |
| + std::vector<MEMORY_BASIC_INFORMATION64> memory_info; |
| + MEMORY_BASIC_INFORMATION64 mbi = {0}; |
| mbi.BaseAddress = 0; |
| mbi.RegionSize = 10; |
| mbi.State = MEM_COMMIT; |
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi)); |
| + memory_info.push_back(mbi); |
| - mbi.BaseAddress = reinterpret_cast<void*>(10); |
| + mbi.BaseAddress = 10; |
| mbi.RegionSize = 20; |
| mbi.State = MEM_FREE; |
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi)); |
| + memory_info.push_back(mbi); |
| std::vector<CheckedRange<WinVMAddress, WinVMSize>> result = |
| GetReadableRangesOfMemoryMap(CheckedRange<WinVMAddress, WinVMSize>(5, 10), |
| @@ -258,18 +249,18 @@ TEST(ProcessInfo, AccessibleRangesOneTruncatedSize) { |
| } |
| TEST(ProcessInfo, AccessibleRangesOneMovedStart) { |
| - std::vector<ProcessInfo::MemoryInfo> memory_info; |
| - MEMORY_BASIC_INFORMATION mbi = {0}; |
| + std::vector<MEMORY_BASIC_INFORMATION64> memory_info; |
| + MEMORY_BASIC_INFORMATION64 mbi = {0}; |
| mbi.BaseAddress = 0; |
| mbi.RegionSize = 10; |
| mbi.State = MEM_FREE; |
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi)); |
| + memory_info.push_back(mbi); |
| - mbi.BaseAddress = reinterpret_cast<void*>(10); |
| + mbi.BaseAddress = 10; |
| mbi.RegionSize = 20; |
| mbi.State = MEM_COMMIT; |
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi)); |
| + memory_info.push_back(mbi); |
| std::vector<CheckedRange<WinVMAddress, WinVMSize>> result = |
| GetReadableRangesOfMemoryMap(CheckedRange<WinVMAddress, WinVMSize>(5, 10), |
| @@ -281,18 +272,18 @@ TEST(ProcessInfo, AccessibleRangesOneMovedStart) { |
| } |
| TEST(ProcessInfo, ReserveIsInaccessible) { |
| - std::vector<ProcessInfo::MemoryInfo> memory_info; |
| - MEMORY_BASIC_INFORMATION mbi = {0}; |
| + std::vector<MEMORY_BASIC_INFORMATION64> memory_info; |
| + MEMORY_BASIC_INFORMATION64 mbi = {0}; |
| mbi.BaseAddress = 0; |
| mbi.RegionSize = 10; |
| mbi.State = MEM_RESERVE; |
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi)); |
| + memory_info.push_back(mbi); |
| - mbi.BaseAddress = reinterpret_cast<void*>(10); |
| + mbi.BaseAddress = 10; |
| mbi.RegionSize = 20; |
| mbi.State = MEM_COMMIT; |
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi)); |
| + memory_info.push_back(mbi); |
| std::vector<CheckedRange<WinVMAddress, WinVMSize>> result = |
| GetReadableRangesOfMemoryMap(CheckedRange<WinVMAddress, WinVMSize>(5, 10), |
| @@ -304,20 +295,20 @@ TEST(ProcessInfo, ReserveIsInaccessible) { |
| } |
| TEST(ProcessInfo, PageGuardIsInaccessible) { |
| - std::vector<ProcessInfo::MemoryInfo> memory_info; |
| - MEMORY_BASIC_INFORMATION mbi = {0}; |
| + std::vector<MEMORY_BASIC_INFORMATION64> memory_info; |
| + MEMORY_BASIC_INFORMATION64 mbi = {0}; |
| mbi.BaseAddress = 0; |
| mbi.RegionSize = 10; |
| mbi.State = MEM_COMMIT; |
| mbi.Protect = PAGE_GUARD; |
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi)); |
| + memory_info.push_back(mbi); |
| - mbi.BaseAddress = reinterpret_cast<void*>(10); |
| + mbi.BaseAddress = 10; |
| mbi.RegionSize = 20; |
| mbi.State = MEM_COMMIT; |
| mbi.Protect = 0; |
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi)); |
| + memory_info.push_back(mbi); |
| std::vector<CheckedRange<WinVMAddress, WinVMSize>> result = |
| GetReadableRangesOfMemoryMap(CheckedRange<WinVMAddress, WinVMSize>(5, 10), |
| @@ -329,20 +320,20 @@ TEST(ProcessInfo, PageGuardIsInaccessible) { |
| } |
| TEST(ProcessInfo, PageNoAccessIsInaccessible) { |
| - std::vector<ProcessInfo::MemoryInfo> memory_info; |
| - MEMORY_BASIC_INFORMATION mbi = {0}; |
| + std::vector<MEMORY_BASIC_INFORMATION64> memory_info; |
| + MEMORY_BASIC_INFORMATION64 mbi = {0}; |
| mbi.BaseAddress = 0; |
| mbi.RegionSize = 10; |
| mbi.State = MEM_COMMIT; |
| mbi.Protect = PAGE_NOACCESS; |
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi)); |
| + memory_info.push_back(mbi); |
| - mbi.BaseAddress = reinterpret_cast<void*>(10); |
| + mbi.BaseAddress = 10; |
| mbi.RegionSize = 20; |
| mbi.State = MEM_COMMIT; |
| mbi.Protect = 0; |
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi)); |
| + memory_info.push_back(mbi); |
| std::vector<CheckedRange<WinVMAddress, WinVMSize>> result = |
| GetReadableRangesOfMemoryMap(CheckedRange<WinVMAddress, WinVMSize>(5, 10), |
| @@ -354,23 +345,23 @@ TEST(ProcessInfo, PageNoAccessIsInaccessible) { |
| } |
| TEST(ProcessInfo, AccessibleRangesCoalesced) { |
| - std::vector<ProcessInfo::MemoryInfo> memory_info; |
| - MEMORY_BASIC_INFORMATION mbi = {0}; |
| + std::vector<MEMORY_BASIC_INFORMATION64> memory_info; |
| + MEMORY_BASIC_INFORMATION64 mbi = {0}; |
| mbi.BaseAddress = 0; |
| mbi.RegionSize = 10; |
| mbi.State = MEM_FREE; |
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi)); |
| + memory_info.push_back(mbi); |
| - mbi.BaseAddress = reinterpret_cast<void*>(10); |
| + mbi.BaseAddress = 10; |
| mbi.RegionSize = 2; |
| mbi.State = MEM_COMMIT; |
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi)); |
| + memory_info.push_back(mbi); |
| - mbi.BaseAddress = reinterpret_cast<void*>(12); |
| + mbi.BaseAddress = 12; |
| mbi.RegionSize = 5; |
| mbi.State = MEM_COMMIT; |
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi)); |
| + memory_info.push_back(mbi); |
| std::vector<CheckedRange<WinVMAddress, WinVMSize>> result = |
| GetReadableRangesOfMemoryMap(CheckedRange<WinVMAddress, WinVMSize>(11, 4), |
| @@ -382,23 +373,23 @@ TEST(ProcessInfo, AccessibleRangesCoalesced) { |
| } |
| TEST(ProcessInfo, AccessibleRangesMiddleUnavailable) { |
| - std::vector<ProcessInfo::MemoryInfo> memory_info; |
| - MEMORY_BASIC_INFORMATION mbi = {0}; |
| + std::vector<MEMORY_BASIC_INFORMATION64> memory_info; |
| + MEMORY_BASIC_INFORMATION64 mbi = {0}; |
| mbi.BaseAddress = 0; |
| mbi.RegionSize = 10; |
| mbi.State = MEM_COMMIT; |
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi)); |
| + memory_info.push_back(mbi); |
| - mbi.BaseAddress = reinterpret_cast<void*>(10); |
| + mbi.BaseAddress = 10; |
| mbi.RegionSize = 5; |
| mbi.State = MEM_FREE; |
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi)); |
| + memory_info.push_back(mbi); |
| - mbi.BaseAddress = reinterpret_cast<void*>(15); |
| + mbi.BaseAddress = 15; |
| mbi.RegionSize = 100; |
| mbi.State = MEM_COMMIT; |
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi)); |
| + memory_info.push_back(mbi); |
| std::vector<CheckedRange<WinVMAddress, WinVMSize>> result = |
| GetReadableRangesOfMemoryMap(CheckedRange<WinVMAddress, WinVMSize>(5, 45), |
| @@ -412,13 +403,13 @@ TEST(ProcessInfo, AccessibleRangesMiddleUnavailable) { |
| } |
| TEST(ProcessInfo, RequestedBeforeMap) { |
| - std::vector<ProcessInfo::MemoryInfo> memory_info; |
| - MEMORY_BASIC_INFORMATION mbi = {0}; |
| + std::vector<MEMORY_BASIC_INFORMATION64> memory_info; |
| + MEMORY_BASIC_INFORMATION64 mbi = {0}; |
| - mbi.BaseAddress = reinterpret_cast<void*>(10); |
| + mbi.BaseAddress = 10; |
| mbi.RegionSize = 10; |
| mbi.State = MEM_COMMIT; |
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi)); |
| + memory_info.push_back(mbi); |
| std::vector<CheckedRange<WinVMAddress, WinVMSize>> result = |
| GetReadableRangesOfMemoryMap(CheckedRange<WinVMAddress, WinVMSize>(5, 10), |
| @@ -430,13 +421,13 @@ TEST(ProcessInfo, RequestedBeforeMap) { |
| } |
| TEST(ProcessInfo, RequestedAfterMap) { |
| - std::vector<ProcessInfo::MemoryInfo> memory_info; |
| - MEMORY_BASIC_INFORMATION mbi = {0}; |
| + std::vector<MEMORY_BASIC_INFORMATION64> memory_info; |
| + MEMORY_BASIC_INFORMATION64 mbi = {0}; |
| - mbi.BaseAddress = reinterpret_cast<void*>(10); |
| + mbi.BaseAddress = 10; |
| mbi.RegionSize = 10; |
| mbi.State = MEM_COMMIT; |
| - memory_info.push_back(ProcessInfo::MemoryInfo(mbi)); |
| + memory_info.push_back(mbi); |
| std::vector<CheckedRange<WinVMAddress, WinVMSize>> result = |
| GetReadableRangesOfMemoryMap( |