| Index: base/win/pe_image_unittest.cc
|
| diff --git a/base/win/pe_image_unittest.cc b/base/win/pe_image_unittest.cc
|
| deleted file mode 100644
|
| index 28b65a4e0ba6102ff10161af4edcf8d7f7d6eb27..0000000000000000000000000000000000000000
|
| --- a/base/win/pe_image_unittest.cc
|
| +++ /dev/null
|
| @@ -1,195 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -// This file contains unit tests for PEImage.
|
| -#include <algorithm>
|
| -#include <vector>
|
| -
|
| -#include "base/files/file_path.h"
|
| -#include "base/path_service.h"
|
| -#include "base/win/pe_image.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace base {
|
| -namespace win {
|
| -
|
| -namespace {
|
| -
|
| -// Just counts the number of invocations.
|
| -bool ImportsCallback(const PEImage& image,
|
| - LPCSTR module,
|
| - DWORD ordinal,
|
| - LPCSTR name,
|
| - DWORD hint,
|
| - PIMAGE_THUNK_DATA iat,
|
| - PVOID cookie) {
|
| - int* count = reinterpret_cast<int*>(cookie);
|
| - (*count)++;
|
| - return true;
|
| -}
|
| -
|
| -// Just counts the number of invocations.
|
| -bool SectionsCallback(const PEImage& image,
|
| - PIMAGE_SECTION_HEADER header,
|
| - PVOID section_start,
|
| - DWORD section_size,
|
| - PVOID cookie) {
|
| - int* count = reinterpret_cast<int*>(cookie);
|
| - (*count)++;
|
| - return true;
|
| -}
|
| -
|
| -// Just counts the number of invocations.
|
| -bool RelocsCallback(const PEImage& image,
|
| - WORD type,
|
| - PVOID address,
|
| - PVOID cookie) {
|
| - int* count = reinterpret_cast<int*>(cookie);
|
| - (*count)++;
|
| - return true;
|
| -}
|
| -
|
| -// Just counts the number of invocations.
|
| -bool ImportChunksCallback(const PEImage& image,
|
| - LPCSTR module,
|
| - PIMAGE_THUNK_DATA name_table,
|
| - PIMAGE_THUNK_DATA iat,
|
| - PVOID cookie) {
|
| - int* count = reinterpret_cast<int*>(cookie);
|
| - (*count)++;
|
| - return true;
|
| -}
|
| -
|
| -// Just counts the number of invocations.
|
| -bool DelayImportChunksCallback(const PEImage& image,
|
| - PImgDelayDescr delay_descriptor,
|
| - LPCSTR module,
|
| - PIMAGE_THUNK_DATA name_table,
|
| - PIMAGE_THUNK_DATA iat,
|
| - PIMAGE_THUNK_DATA bound_iat,
|
| - PIMAGE_THUNK_DATA unload_iat,
|
| - PVOID cookie) {
|
| - int* count = reinterpret_cast<int*>(cookie);
|
| - (*count)++;
|
| - return true;
|
| -}
|
| -
|
| -// Just counts the number of invocations.
|
| -bool ExportsCallback(const PEImage& image,
|
| - DWORD ordinal,
|
| - DWORD hint,
|
| - LPCSTR name,
|
| - PVOID function,
|
| - LPCSTR forward,
|
| - PVOID cookie) {
|
| - int* count = reinterpret_cast<int*>(cookie);
|
| - (*count)++;
|
| - return true;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -// Tests that we are able to enumerate stuff from a PE file, and that
|
| -// the actual number of items found matches an expected value.
|
| -TEST(PEImageTest, EnumeratesPE) {
|
| - base::FilePath pe_image_test_path;
|
| - ASSERT_TRUE(PathService::Get(DIR_TEST_DATA, &pe_image_test_path));
|
| - pe_image_test_path = pe_image_test_path.Append(FILE_PATH_LITERAL("pe_image"));
|
| -
|
| -#if defined(ARCH_CPU_64_BITS)
|
| - pe_image_test_path =
|
| - pe_image_test_path.Append(FILE_PATH_LITERAL("pe_image_test_64.dll"));
|
| - const int sections = 6;
|
| - const int imports_dlls = 2;
|
| - const int delay_dlls = 2;
|
| - const int exports = 2;
|
| - const int imports = 69;
|
| - const int delay_imports = 2;
|
| - const int relocs = 632;
|
| -#else
|
| - pe_image_test_path =
|
| - pe_image_test_path.Append(FILE_PATH_LITERAL("pe_image_test_32.dll"));
|
| - const int sections = 5;
|
| - const int imports_dlls = 2;
|
| - const int delay_dlls = 2;
|
| - const int exports = 2;
|
| - const int imports = 66;
|
| - const int delay_imports = 2;
|
| - const int relocs = 1586;
|
| -#endif
|
| -
|
| - HMODULE module = LoadLibrary(pe_image_test_path.value().c_str());
|
| - ASSERT_TRUE(NULL != module);
|
| -
|
| - PEImage pe(module);
|
| - int count = 0;
|
| - EXPECT_TRUE(pe.VerifyMagic());
|
| -
|
| - pe.EnumSections(SectionsCallback, &count);
|
| - EXPECT_EQ(sections, count);
|
| -
|
| - count = 0;
|
| - pe.EnumImportChunks(ImportChunksCallback, &count);
|
| - EXPECT_EQ(imports_dlls, count);
|
| -
|
| - count = 0;
|
| - pe.EnumDelayImportChunks(DelayImportChunksCallback, &count);
|
| - EXPECT_EQ(delay_dlls, count);
|
| -
|
| - count = 0;
|
| - pe.EnumExports(ExportsCallback, &count);
|
| - EXPECT_EQ(exports, count);
|
| -
|
| - count = 0;
|
| - pe.EnumAllImports(ImportsCallback, &count);
|
| - EXPECT_EQ(imports, count);
|
| -
|
| - count = 0;
|
| - pe.EnumAllDelayImports(ImportsCallback, &count);
|
| - EXPECT_EQ(delay_imports, count);
|
| -
|
| - count = 0;
|
| - pe.EnumRelocs(RelocsCallback, &count);
|
| - EXPECT_EQ(relocs, count);
|
| -
|
| - FreeLibrary(module);
|
| -}
|
| -
|
| -// Tests that we can locate an specific exported symbol, by name and by ordinal.
|
| -TEST(PEImageTest, RetrievesExports) {
|
| - HMODULE module = LoadLibrary(L"advapi32.dll");
|
| - ASSERT_TRUE(NULL != module);
|
| -
|
| - PEImage pe(module);
|
| - WORD ordinal;
|
| -
|
| - EXPECT_TRUE(pe.GetProcOrdinal("RegEnumKeyExW", &ordinal));
|
| -
|
| - FARPROC address1 = pe.GetProcAddress("RegEnumKeyExW");
|
| - FARPROC address2 = pe.GetProcAddress(reinterpret_cast<char*>(ordinal));
|
| - EXPECT_TRUE(address1 != NULL);
|
| - EXPECT_TRUE(address2 != NULL);
|
| - EXPECT_TRUE(address1 == address2);
|
| -
|
| - FreeLibrary(module);
|
| -}
|
| -
|
| -// Test that we can get debug id out of a module.
|
| -TEST(PEImageTest, GetDebugId) {
|
| - HMODULE module = LoadLibrary(L"advapi32.dll");
|
| - ASSERT_TRUE(NULL != module);
|
| -
|
| - PEImage pe(module);
|
| - GUID guid = {0};
|
| - DWORD age = 0;
|
| - EXPECT_TRUE(pe.GetDebugId(&guid, &age));
|
| -
|
| - GUID empty_guid = {0};
|
| - EXPECT_TRUE(!IsEqualGUID(empty_guid, guid));
|
| - EXPECT_NE(0U, age);
|
| - FreeLibrary(module);
|
| -}
|
| -
|
| -} // namespace win
|
| -} // namespace base
|
|
|