Index: util/mac/process_types_test.cc |
diff --git a/util/mac/process_types_test.cc b/util/mac/process_types_test.cc |
deleted file mode 100644 |
index 93ecc2aa2a8474a9e41400e698a34ae4820de328..0000000000000000000000000000000000000000 |
--- a/util/mac/process_types_test.cc |
+++ /dev/null |
@@ -1,263 +0,0 @@ |
-// Copyright 2014 The Crashpad Authors. All rights reserved. |
-// |
-// Licensed under the Apache License, Version 2.0 (the "License"); |
-// you may not use this file except in compliance with the License. |
-// You may obtain a copy of the License at |
-// |
-// http://www.apache.org/licenses/LICENSE-2.0 |
-// |
-// Unless required by applicable law or agreed to in writing, software |
-// distributed under the License is distributed on an "AS IS" BASIS, |
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-// See the License for the specific language governing permissions and |
-// limitations under the License. |
- |
-#include "util/mac/process_types.h" |
- |
-#include <AvailabilityMacros.h> |
-#include <mach/mach.h> |
-#include <string.h> |
- |
-#include <vector> |
- |
-#include "base/strings/stringprintf.h" |
-#include "gtest/gtest.h" |
-#include "util/mac/mac_util.h" |
-#include "util/test/mac/dyld.h" |
- |
-namespace crashpad { |
-namespace test { |
-namespace { |
- |
-#define TEST_STRING(process_reader, self_view, proctype_view, field) \ |
- do { \ |
- if (self_view->field) { \ |
- std::string proctype_string; \ |
- ASSERT_TRUE(process_reader.Memory()->ReadCString(proctype_view.field, \ |
- &proctype_string)); \ |
- EXPECT_EQ(self_view->field, proctype_string); \ |
- } \ |
- } while (false) |
- |
-TEST(ProcessTypes, DyldImagesSelf) { |
- // Get the in-process view of dyld_all_image_infos, and check it for sanity. |
- const struct dyld_all_image_infos* self_image_infos = |
- _dyld_get_all_image_infos(); |
- int mac_os_x_minor_version = MacOSXMinorVersion(); |
- if (mac_os_x_minor_version >= 9) { |
- EXPECT_GE(self_image_infos->version, 13u); |
- } else if (mac_os_x_minor_version >= 7) { |
- EXPECT_GE(self_image_infos->version, 8u); |
- } else if (mac_os_x_minor_version >= 6) { |
- EXPECT_GE(self_image_infos->version, 2u); |
- } else { |
- EXPECT_GE(self_image_infos->version, 1u); |
- } |
- |
- EXPECT_GT(self_image_infos->infoArrayCount, 1u); |
- if (self_image_infos->version >= 2) { |
- EXPECT_TRUE(self_image_infos->libSystemInitialized); |
- } |
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 |
- if (self_image_infos->version >= 9) { |
- EXPECT_EQ(self_image_infos, self_image_infos->dyldAllImageInfosAddress); |
- } |
-#endif |
- |
- // Get the out-of-process view of dyld_all_image_infos, and work with it |
- // through the process_types interface. |
- task_dyld_info_data_t dyld_info; |
- mach_msg_type_number_t count = TASK_DYLD_INFO_COUNT; |
- kern_return_t kr = task_info(mach_task_self(), |
- TASK_DYLD_INFO, |
- reinterpret_cast<task_info_t>(&dyld_info), |
- &count); |
- ASSERT_EQ(KERN_SUCCESS, kr); |
- |
- EXPECT_EQ(reinterpret_cast<mach_vm_address_t>(self_image_infos), |
- dyld_info.all_image_info_addr); |
- EXPECT_GT(dyld_info.all_image_info_size, 1u); |
- |
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 |
-#if !defined(ARCH_CPU_64_BITS) |
- EXPECT_EQ(TASK_DYLD_ALL_IMAGE_INFO_32, dyld_info.all_image_info_format); |
-#else |
- EXPECT_EQ(TASK_DYLD_ALL_IMAGE_INFO_64, dyld_info.all_image_info_format); |
-#endif |
-#endif |
- |
- ProcessReader process_reader; |
- ASSERT_TRUE(process_reader.Initialize(mach_task_self())); |
- |
- process_types::dyld_all_image_infos proctype_image_infos; |
- ASSERT_TRUE(proctype_image_infos.Read(&process_reader, |
- dyld_info.all_image_info_addr)); |
- |
- ASSERT_EQ(self_image_infos->version, proctype_image_infos.version); |
- |
- if (proctype_image_infos.version >= 1) { |
- EXPECT_EQ(self_image_infos->infoArrayCount, |
- proctype_image_infos.infoArrayCount); |
- EXPECT_EQ(reinterpret_cast<uint64_t>(self_image_infos->infoArray), |
- proctype_image_infos.infoArray); |
- EXPECT_EQ(reinterpret_cast<uint64_t>(self_image_infos->notification), |
- proctype_image_infos.notification); |
- EXPECT_EQ(self_image_infos->processDetachedFromSharedRegion, |
- proctype_image_infos.processDetachedFromSharedRegion); |
- } |
- if (proctype_image_infos.version >= 2) { |
- EXPECT_EQ(self_image_infos->libSystemInitialized, |
- proctype_image_infos.libSystemInitialized); |
- EXPECT_EQ( |
- reinterpret_cast<uint64_t>(self_image_infos->dyldImageLoadAddress), |
- proctype_image_infos.dyldImageLoadAddress); |
- } |
- if (proctype_image_infos.version >= 3) { |
- EXPECT_EQ(reinterpret_cast<uint64_t>(self_image_infos->jitInfo), |
- proctype_image_infos.jitInfo); |
- } |
- if (proctype_image_infos.version >= 5) { |
- EXPECT_EQ(reinterpret_cast<uint64_t>(self_image_infos->dyldVersion), |
- proctype_image_infos.dyldVersion); |
- EXPECT_EQ(reinterpret_cast<uint64_t>(self_image_infos->errorMessage), |
- proctype_image_infos.errorMessage); |
- EXPECT_EQ(static_cast<uint64_t>(self_image_infos->terminationFlags), |
- proctype_image_infos.terminationFlags); |
- |
- TEST_STRING( |
- process_reader, self_image_infos, proctype_image_infos, dyldVersion); |
- TEST_STRING( |
- process_reader, self_image_infos, proctype_image_infos, errorMessage); |
- } |
- if (proctype_image_infos.version >= 6) { |
- EXPECT_EQ( |
- reinterpret_cast<uint64_t>(self_image_infos->coreSymbolicationShmPage), |
- proctype_image_infos.coreSymbolicationShmPage); |
- } |
- if (proctype_image_infos.version >= 7) { |
- EXPECT_EQ(static_cast<uint64_t>(self_image_infos->systemOrderFlag), |
- proctype_image_infos.systemOrderFlag); |
- } |
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 |
- if (proctype_image_infos.version >= 8) { |
- EXPECT_EQ(static_cast<uint64_t>(self_image_infos->uuidArrayCount), |
- proctype_image_infos.uuidArrayCount); |
- } |
- if (proctype_image_infos.version >= 9) { |
- EXPECT_EQ( |
- reinterpret_cast<uint64_t>(self_image_infos->dyldAllImageInfosAddress), |
- proctype_image_infos.dyldAllImageInfosAddress); |
- } |
- if (proctype_image_infos.version >= 10) { |
- EXPECT_EQ(static_cast<uint64_t>(self_image_infos->initialImageCount), |
- proctype_image_infos.initialImageCount); |
- } |
- if (proctype_image_infos.version >= 11) { |
- EXPECT_EQ(static_cast<uint64_t>(self_image_infos->errorKind), |
- proctype_image_infos.errorKind); |
- EXPECT_EQ( |
- reinterpret_cast<uint64_t>(self_image_infos->errorClientOfDylibPath), |
- proctype_image_infos.errorClientOfDylibPath); |
- EXPECT_EQ( |
- reinterpret_cast<uint64_t>(self_image_infos->errorTargetDylibPath), |
- proctype_image_infos.errorTargetDylibPath); |
- EXPECT_EQ(reinterpret_cast<uint64_t>(self_image_infos->errorSymbol), |
- proctype_image_infos.errorSymbol); |
- |
- TEST_STRING(process_reader, |
- self_image_infos, |
- proctype_image_infos, |
- errorClientOfDylibPath); |
- TEST_STRING(process_reader, |
- self_image_infos, |
- proctype_image_infos, |
- errorTargetDylibPath); |
- TEST_STRING( |
- process_reader, self_image_infos, proctype_image_infos, errorSymbol); |
- } |
- if (proctype_image_infos.version >= 12) { |
- EXPECT_EQ(static_cast<uint64_t>(self_image_infos->sharedCacheSlide), |
- proctype_image_infos.sharedCacheSlide); |
- } |
-#endif |
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_9 |
- if (proctype_image_infos.version >= 13) { |
- EXPECT_EQ(0, |
- memcmp(self_image_infos->sharedCacheUUID, |
- proctype_image_infos.sharedCacheUUID, |
- sizeof(self_image_infos->sharedCacheUUID))); |
- } |
- if (proctype_image_infos.version >= 14) { |
- for (size_t index = 0; index < arraysize(self_image_infos->reserved); |
- ++index) { |
- EXPECT_EQ(static_cast<uint64_t>(self_image_infos->reserved[index]), |
- proctype_image_infos.reserved[index]) |
- << "index " << index; |
- } |
- } |
-#endif |
- |
- if (proctype_image_infos.version >= 1) { |
- std::vector<process_types::dyld_image_info> proctype_image_info_vector( |
- proctype_image_infos.infoArrayCount); |
- ASSERT_TRUE(process_types::dyld_image_info::ReadArrayInto( |
- &process_reader, |
- proctype_image_infos.infoArray, |
- proctype_image_info_vector.size(), |
- &proctype_image_info_vector[0])); |
- |
- for (size_t index = 0; index < proctype_image_infos.infoArrayCount; |
- ++index) { |
- const dyld_image_info* self_image_info = |
- &self_image_infos->infoArray[index]; |
- const process_types::dyld_image_info& proctype_image_info = |
- proctype_image_info_vector[index]; |
- |
- EXPECT_EQ(reinterpret_cast<uint64_t>(self_image_info->imageLoadAddress), |
- proctype_image_info.imageLoadAddress) |
- << "index " << index; |
- EXPECT_EQ(reinterpret_cast<uint64_t>(self_image_info->imageFilePath), |
- proctype_image_info.imageFilePath) |
- << "index " << index; |
- EXPECT_EQ(static_cast<uint64_t>(self_image_info->imageFileModDate), |
- proctype_image_info.imageFileModDate) |
- << "index " << index; |
- |
- TEST_STRING( |
- process_reader, self_image_info, proctype_image_info, imageFilePath); |
- } |
- } |
- |
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 |
- if (proctype_image_infos.version >= 8) { |
- std::vector<process_types::dyld_uuid_info> proctype_uuid_info_vector( |
- proctype_image_infos.uuidArrayCount); |
- ASSERT_TRUE(process_types::dyld_uuid_info::ReadArrayInto( |
- &process_reader, |
- proctype_image_infos.uuidArray, |
- proctype_uuid_info_vector.size(), |
- &proctype_uuid_info_vector[0])); |
- |
- for (size_t index = 0; index < proctype_image_infos.uuidArrayCount; |
- ++index) { |
- const dyld_uuid_info* self_uuid_info = |
- &self_image_infos->uuidArray[index]; |
- const process_types::dyld_uuid_info& proctype_uuid_info = |
- proctype_uuid_info_vector[index]; |
- |
- EXPECT_EQ(reinterpret_cast<uint64_t>(self_uuid_info->imageLoadAddress), |
- proctype_uuid_info.imageLoadAddress) |
- << "index " << index; |
- EXPECT_EQ(0, |
- memcmp(self_uuid_info->imageUUID, |
- proctype_uuid_info.imageUUID, |
- sizeof(self_uuid_info->imageUUID))) |
- << "index " << index; |
- } |
- } |
-#endif |
-} |
- |
-} // namespace |
-} // namespace test |
-} // namespace crashpad |