| 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
 | 
| 
 |