[bazel] Copy over BUILD.bazel from google3
... to bootstrap Bazel build for crashpad.
NOTE: These BUILD.bazel files don't work as-is since they are from
google3, this CL is to provide a diffbase to ease reviews of
improvements on these files.
Change-Id: Ic2c6fd0b2f3a528be98d89730ef80dbecfe5594f
Reviewed-on: https://fuchsia-review.googlesource.com/c/third_party/crashpad/+/750242
Reviewed-by: Shai Barack <shayba@google.com>
diff --git a/BUILD.bazel b/BUILD.bazel
new file mode 100644
index 0000000..642d753
--- /dev/null
+++ b/BUILD.bazel
@@ -0,0 +1,72 @@
+# Description:
+# Crashpad is a crash-reporting system.
+
+load("//tools/build_defs/testing:bzl_library.bzl", "bzl_library")
+load("//devtools/moe/builddefs:builddefs.bzl", "GenInternalCodebase")
+load("//third_party/crashpad:copts.bzl", "CRASHPAD_COMMON_COPTS")
+
+package(default_visibility = [
+ ":clients",
+ "//third_party/crashpad:__subpackages__",
+])
+
+# Crashpad itself is licensed under the Apache 2.0 license, but (when built for
+# non-Apple systems) has a dependency on a header for the Mach-O loader. This is
+# licensed under the APSL 2.0.
+licenses(["reciprocal"])
+
+exports_files(["LICENSE"])
+
+package_group(
+ name = "clients",
+ includes = [
+ # This takes priority over the `-//googlemac/iPhone/...` in `packages`.
+ "//googlemac/iPhone/Shared/Performance/Primes/v2:internal",
+ ],
+ packages = [
+ # Clients in googlemac/iPhone should use the Primes interface to Crashpad.
+ "-//googlemac/iPhone/...",
+ # Other clients (macOS, Linux, Windows, etc.) can directly use Crashpad.
+ "//...",
+ ],
+)
+
+# Makes crashpad headers available at their subdirectory locations.
+cc_library(
+ name = "internal",
+ hdrs = ["crashpad/package.h"],
+ compatible_with = ["//buildenv/target:non_prod"],
+ copts = CRASHPAD_COMMON_COPTS,
+ includes = ["crashpad"],
+ visibility = ["//third_party:__subpackages__"],
+)
+
+filegroup(
+ name = "opensource_filegroup",
+ srcs = glob([
+ "crashpad/**",
+ ]),
+)
+
+GenInternalCodebase(
+ name = "crashpad_internal_codebase",
+ srcs = [
+ "opensource_filegroup",
+ ],
+ out = "crashpad_internal_codebase.tar",
+)
+
+bzl_library(
+ name = "minimum_os_bzl",
+ srcs = ["minimum_os.bzl"],
+ parse_tests = False,
+ visibility = ["//visibility:private"],
+)
+
+bzl_library(
+ name = "copts_bzl",
+ srcs = ["copts.bzl"],
+ visibility = [
+ "//third_party/crashpad:__subpackages__",
+ ],
+)
diff --git a/client/BUILD.bazel b/client/BUILD.bazel
new file mode 100644
index 0000000..1b63a2b
--- /dev/null
+++ b/client/BUILD.bazel
@@ -0,0 +1,297 @@
+# Copyright 2018 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.
+
+load("//third_party/crashpad:copts.bzl", "CRASHPAD_COMMON_COPTS")
+load("//tools/build_defs/apple:ios.bzl", "ios_unit_test")
+
+licenses(["notice"])
+
+package(
+ default_visibility = [
+ "//third_party/crashpad:__subpackages__",
+ "//third_party/crashpad:clients",
+ ],
+)
+
+CRASHPAD_TEST_SOURCES = [
+ "annotation_list_test.cc",
+ "annotation_test.cc",
+ "prune_crash_reports_test.cc",
+ "settings_test.cc",
+ "simple_address_range_bag_test.cc",
+ "simple_string_dictionary_test.cc",
+]
+
+cc_library(
+ name = "common",
+ srcs = [
+ "annotation.cc",
+ "annotation_list.cc",
+ "crash_report_database.cc",
+ "crashpad_info.cc",
+ "settings.cc",
+ ] + select({
+ "//tools/cc_target_os:apple": [],
+ "//tools/cc_target_os:windows": [
+ "crash_report_database_win.cc",
+ ],
+ "//conditions:default": [
+ "crashpad_info_note.S",
+ "crash_report_database_generic.cc",
+ ],
+ }),
+ hdrs = [
+ "annotation.h",
+ "annotation_list.h",
+ "crash_report_database.h",
+ "crashpad_info.h",
+ "settings.h",
+ "simple_address_range_bag.h",
+ "simple_string_dictionary.h",
+ ],
+ compatible_with = ["//buildenv/target:non_prod"],
+ copts = CRASHPAD_COMMON_COPTS,
+ features = ["-use_header_modules"],
+ linkopts = select({
+ "//tools/cc_target_os:platform_macos": [],
+ "//tools/cc_target_os:windows": [
+ "rpcrt4.lib",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ] + select({
+ "//tools/cc_target_os:platform_ios": [
+ ":common_apple",
+ ],
+ "//tools/cc_target_os:platform_macos": [":common_apple"],
+ "//conditions:default": [],
+ }),
+)
+
+objc_library(
+ name = "common_apple",
+ srcs = [
+ "annotation.h",
+ "crash_report_database.h",
+ "crashpad_client.h",
+ "settings.h",
+ ],
+ hdrs = select({
+ "//tools/cc_target_os:platform_ios": [
+ "ios_handler/exception_processor.h",
+ "simulate_crash_ios.h",
+ "upload_behavior_ios.h",
+ ],
+ "//conditions:default": [],
+ }),
+ aspect_hints = [
+ # This target's headers contain C++ and cannot be imported from Swift.
+ "//tools/build_defs/swift:no_module",
+ ],
+ compatible_with = ["//buildenv/target:non_prod"],
+ copts = [
+ "-Ithird_party/mini_chromium/mini_chromium",
+ ],
+ features = ["-layering_check"],
+ non_arc_srcs = [
+ "crash_report_database_mac.mm",
+ ] + select({
+ "//tools/cc_target_os:platform_ios": [
+ "ios_handler/exception_processor.mm",
+ ],
+ "//conditions:default": [],
+ }),
+ tags = ["maconly"],
+ deps = [
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/crashpad/crashpad/util:util_mac",
+ ],
+)
+
+cc_library(
+ name = "client",
+ srcs = [
+ "prune_crash_reports.cc",
+ ] + select({
+ "//tools/cc_target_os:platform_macos": [
+ "crashpad_client_mac.cc",
+ "simulate_crash_mac.cc",
+ "simulate_crash_mac.h",
+ ],
+ "//tools/cc_target_os:platform_ios": [
+ "crashpad_client_ios.cc",
+ "ios_handler/in_process_handler.cc",
+ "ios_handler/in_process_handler.h",
+ "ios_handler/in_process_intermediate_dump_handler.cc",
+ "ios_handler/in_process_intermediate_dump_handler.h",
+ "ios_handler/prune_intermediate_dumps_and_crash_reports_thread.h",
+ "ios_handler/prune_intermediate_dumps_and_crash_reports_thread.cc",
+ "simulate_crash_ios.h",
+ ],
+ "//tools/cc_target_os:windows": [
+ "crashpad_client_win.cc",
+ "simulate_crash_win.h",
+ ],
+ "//conditions:default": [
+ "client_argv_handling.cc",
+ "client_argv_handling.h",
+ "crashpad_client_linux.cc",
+ "simulate_crash_linux.h",
+ ],
+ }),
+ hdrs = [
+ "annotation.h",
+ "annotation_list.h",
+ "crash_report_database.h",
+ "crashpad_client.h",
+ "crashpad_info.h",
+ "prune_crash_reports.h",
+ "settings.h",
+ "simple_address_range_bag.h",
+ "simple_string_dictionary.h",
+ "simulate_crash.h",
+ ] + select({
+ "//tools/cc_target_os:platform_ios": [
+ "upload_behavior_ios.h",
+ ],
+ "//conditions:default": [
+ ],
+ }),
+ compatible_with = ["//buildenv/target:non_prod"],
+ copts = CRASHPAD_COMMON_COPTS,
+ features = ["-use_header_modules"],
+ linkopts = select({
+ "//tools/cc_target_os:platform_macos": [],
+ "//tools/cc_target_os:windows": [
+ "rpcrt4.lib",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":common",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ] + select({
+ "//tools/cc_target_os:platform_macos": [
+ "//third_party/crashpad/crashpad/util:util_mac",
+ "//third_party/mini_chromium:base_mac",
+ ],
+ "//tools/cc_target_os:platform_ios": [
+ ":common_apple",
+ "//third_party/crashpad/crashpad/handler:common",
+ "//third_party/crashpad/crashpad/minidump",
+ "//third_party/crashpad/crashpad/snapshot",
+ "//third_party/crashpad/crashpad/util:util_mac",
+ "//third_party/mini_chromium:base_mac",
+ ],
+ "//tools/cc_target_os:windows": [],
+ "//conditions:default": [
+ "//third_party/crashpad/crashpad/external_libraries/lss",
+ ],
+ }),
+)
+
+cc_library(
+ name = "pthread_create",
+ srcs = ["pthread_create_linux.cc"],
+ tags = ["linuxonly"],
+ deps = [
+ ":client",
+ "//third_party/crashpad/crashpad/util:no_cfi_icall",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+objc_library(
+ name = "client_ios_test_lib",
+ testonly = 1,
+ srcs = CRASHPAD_TEST_SOURCES + [
+ "ios_handler/in_process_handler_test.cc",
+ "ios_handler/in_process_intermediate_dump_handler_test.cc",
+ ],
+ features = ["-layering_check"],
+ non_arc_srcs = [
+ "crashpad_client_ios_test.mm",
+ "ios_handler/exception_processor_test.mm",
+ ],
+ tags = ["iosonly"],
+ deps = [
+ ":client",
+ "//testing/base/public:gunit_no_google3",
+ "//third_party/apple_frameworks:XCTest",
+ "//third_party/crashpad/crashpad/test",
+ "//third_party/mini_chromium:base",
+ "//third_party/mini_chromium:testing",
+ ],
+ alwayslink = 1,
+)
+
+ios_unit_test(
+ name = "client_ios_test",
+ minimum_os_version = "13.0",
+ runner = "//testing/utp/ios:IOS_LATEST",
+ tags = ["iosonly"],
+ deps = [
+ ":client_ios_test_lib",
+ "//third_party/objective_c/google_toolbox_for_mac:GTM_GoogleTestRunner_GTM_USING_XCTEST",
+ ],
+)
+
+cc_test(
+ name = "client_test",
+ srcs = CRASHPAD_TEST_SOURCES + [
+ # This is !iOS because GTEST_SKIP will fail when using GTM.
+ "crash_report_database_test.cc",
+ ] + select({
+ "//tools/cc_target_os:platform_macos": ["simulate_crash_mac_test.cc"],
+ "//tools/cc_target_os:platform_ios": [],
+ "//tools/cc_target_os:windows": ["crashpad_client_win_test.cc"],
+ "//conditions:default": ["crashpad_client_linux_test.cc"],
+ }),
+ copts = CRASHPAD_COMMON_COPTS + [
+ "-Wno-non-virtual-dtor",
+ ],
+ data = select({
+ "//tools/cc_target_os:windows": [
+ "//third_party/crashpad/crashpad/handler:crashpad_handler.com",
+ ],
+ "//conditions:default": [
+ "//third_party/crashpad/crashpad/handler:crashpad_handler",
+ ],
+ }),
+ features = ["-use_header_modules"],
+ deps = [
+ ":client",
+ "//testing/base/public:gunit_no_google3",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/snapshot",
+ "//third_party/crashpad/crashpad/test",
+ "//third_party/crashpad/crashpad/test:googlemock_main",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ] + select({
+ "//tools/cc_target_os:platform_macos": [
+ "//third_party/crashpad/crashpad/util:util_mac",
+ ],
+ "//conditions:default": [],
+ }),
+)
diff --git a/compat/BUILD.bazel b/compat/BUILD.bazel
new file mode 100644
index 0000000..2916b95
--- /dev/null
+++ b/compat/BUILD.bazel
@@ -0,0 +1,196 @@
+# Copyright 2015 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.
+
+load("//tools/build_defs/testing:bzl_library.bzl", "bzl_library")
+
+licenses(["notice"])
+
+package(
+ default_visibility = [
+ "//third_party/crashpad:__subpackages__",
+ ],
+)
+
+COMPAT_ANDROID_SOURCES = [
+ "android/dlfcn_internal.cc",
+ "android/sys/epoll.cc",
+ "android/sys/mman_mmap.cc",
+]
+
+COMPAT_ANDROID_HEADERS = [
+ "android/dlfcn_internal.h",
+ "android/elf.h",
+ "android/linux/elf.h",
+ "android/linux/prctl.h",
+ "android/linux/ptrace.h",
+ "android/sched.h",
+ "android/sys/epoll.h",
+ "android/sys/mman.h",
+ "android/sys/syscall.h",
+ "android/sys/user.h",
+]
+
+COMPAT_LINUX_SOURCES = [
+ "linux/sys/mman_memfd_create.cc",
+]
+
+COMPAT_LINUX_HEADERS = [
+ "linux/signal.h",
+ "linux/sys/mman.h",
+ "linux/sys/ptrace.h",
+ "linux/sys/user.h",
+]
+
+COMPAT_APPLE_SOURCES = [
+]
+
+COMPAT_APPLE_HEADERS = [
+ "mac/Availability.h",
+ "mac/AvailabilityVersions.h",
+ "mac/kern/exc_resource.h",
+ "mac/mach/mach.h",
+ "mac/mach-o/loader.h",
+ "mac/sys/resource.h",
+]
+
+COMPAT_MAC_SOURCES = [
+]
+
+COMPAT_MAC_HEADERS = [
+ "mac/mach/i386/thread_state.h",
+]
+
+COMPAT_IOS_SOURCES = [
+]
+
+COMPAT_IOS_HEADERS = [
+ "ios/mach/exc.defs",
+ "ios/mach/mach_exc.defs",
+ "ios/mach/mach_types.defs",
+ "ios/mach/machine/machine_types.defs",
+ "ios/mach/std_types.defs",
+]
+
+COMPAT_NONMAC_SOURCES = [
+]
+
+COMPAT_NONMAC_HEADERS = [
+ "non_mac/mach/mach.h",
+]
+
+COMPAT_WINDOWS_SOURCES = [
+ "win/strings.cc",
+ "win/time.cc",
+]
+
+COMPAT_WINDOWS_HEADERS = [
+ "win/getopt.h",
+ "win/strings.h",
+ "win/sys/time.h",
+ "win/sys/types.h",
+ "win/time.h",
+ "win/winbase.h",
+ "win/winnt.h",
+ "win/winternl.h",
+]
+
+COMPAT_NONWIN_SOURCES = [
+ "non_win/minwinbase.h",
+ "non_win/timezoneapi.h",
+ "non_win/verrsrc.h",
+]
+
+COMPAT_NONWIN_HEADERS = [
+ "non_win/dbghelp.h",
+ "non_win/windows.h",
+ "non_win/winnt.h",
+]
+
+filegroup(
+ name = "src_location",
+ srcs = ["."],
+ compatible_with = ["//buildenv/target:non_prod"],
+ tags = ["maconly"],
+)
+
+cc_library(
+ name = "compat",
+ srcs = select({
+ "//tools/cc_target_os:platform_macos": COMPAT_APPLE_SOURCES + COMPAT_MAC_SOURCES +
+ COMPAT_NONWIN_SOURCES,
+ "//tools/cc_target_os:platform_ios": COMPAT_APPLE_SOURCES + COMPAT_IOS_SOURCES +
+ COMPAT_NONWIN_SOURCES,
+ "//tools/cc_target_os:android": COMPAT_ANDROID_SOURCES + COMPAT_LINUX_SOURCES +
+ COMPAT_NONMAC_SOURCES + COMPAT_NONWIN_SOURCES,
+ "//tools/cc_target_os:windows": COMPAT_WINDOWS_SOURCES + COMPAT_NONMAC_SOURCES,
+ "//conditions:default": COMPAT_LINUX_SOURCES +
+ COMPAT_NONMAC_SOURCES + COMPAT_NONWIN_SOURCES,
+ }),
+ hdrs = select({
+ "//tools/cc_target_os:platform_macos": COMPAT_APPLE_HEADERS + COMPAT_MAC_HEADERS +
+ COMPAT_NONWIN_HEADERS,
+ "//tools/cc_target_os:platform_ios": COMPAT_APPLE_HEADERS + COMPAT_IOS_HEADERS +
+ COMPAT_NONWIN_HEADERS,
+ "//tools/cc_target_os:android": COMPAT_ANDROID_HEADERS + COMPAT_LINUX_HEADERS +
+ COMPAT_NONMAC_HEADERS + COMPAT_NONWIN_HEADERS,
+ "//tools/cc_target_os:windows": COMPAT_WINDOWS_HEADERS + COMPAT_NONMAC_HEADERS,
+ "//conditions:default": COMPAT_LINUX_HEADERS +
+ COMPAT_NONMAC_HEADERS + COMPAT_NONWIN_HEADERS,
+ }),
+ compatible_with = ["//buildenv/target:non_prod"],
+ copts = select({
+ "//tools/cc_target_os:android": [
+ "-Ithird_party/crashpad/crashpad/compat/android",
+ ],
+ "//conditions:default": [],
+ }),
+ includes = select({
+ "//tools/cc_target_os:apple": [
+ "non_win",
+ ],
+ "//tools/cc_target_os:windows": [
+ "non_mac",
+ "win",
+ ],
+ "//conditions:default": [
+ "non_mac",
+ "non_win",
+ ],
+ }),
+ linkopts = select({
+ "//tools/cc_target_os:android": ["-ldl"],
+ "//tools/cc_target_os:apple": [],
+ "//tools/cc_target_os:windows": [],
+ "//conditions:default": ["-ldl"],
+ }),
+ deps = [
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/util:no_cfi_icall",
+ "//third_party/mini_chromium:base",
+ ] + select({
+ "//tools/cc_target_os:windows": [
+ "//third_party/crashpad/crashpad/external_libraries/getopt",
+ ],
+ "//conditions:default": [
+ "//third_party/crashpad/crashpad/external_libraries/xnu",
+ ],
+ }),
+)
+
+bzl_library(
+ name = "includes_bzl",
+ srcs = ["includes.bzl"],
+ parse_tests = False,
+ visibility = ["//visibility:private"],
+)
diff --git a/compat/includes.bzl b/compat/includes.bzl
new file mode 100644
index 0000000..14acddc
--- /dev/null
+++ b/compat/includes.bzl
@@ -0,0 +1,27 @@
+"""Inclusion entries needed for compat headers."""
+
+CRASHPAD_COMPAT_INCLUDES_COPTS_MACOS = [
+ "-Ithird_party/crashpad/crashpad/compat/mac",
+]
+
+CRASHPAD_COMPAT_INCLUDES_COPTS_IOS = [
+ "-Ithird_party/crashpad/crashpad/compat/mac",
+ "-Ithird_party/crashpad/crashpad/compat/ios",
+]
+
+CRASHPAD_COMPAT_INCLUDES_COPTS_ANDROID = [
+ "-Ithird_party/crashpad/crashpad/compat/linux",
+ "-Ithird_party/crashpad/crashpad/compat/android",
+]
+
+CRASHPAD_COMPAT_INCLUDES_COPTS_DEFAULT = [
+ "-Ithird_party/crashpad/crashpad/compat/linux",
+]
+
+CRASHPAD_COMPAT_INCLUDES_COPTS = select({
+ "//tools/cc_target_os:platform_macos": CRASHPAD_COMPAT_INCLUDES_COPTS_MACOS,
+ "//tools/cc_target_os:platform_ios": CRASHPAD_COMPAT_INCLUDES_COPTS_IOS,
+ "//tools/cc_target_os:windows": [],
+ "//tools/cc_target_os:android": CRASHPAD_COMPAT_INCLUDES_COPTS_ANDROID,
+ "//conditions:default": CRASHPAD_COMPAT_INCLUDES_COPTS_DEFAULT,
+})
diff --git a/copts.bzl b/copts.bzl
new file mode 100644
index 0000000..dc67c59
--- /dev/null
+++ b/copts.bzl
@@ -0,0 +1,69 @@
+"""Common compiler options."""
+
+load(
+ "//third_party/crashpad/crashpad/compat:includes.bzl",
+ "CRASHPAD_COMPAT_INCLUDES_COPTS",
+)
+
+# Keep in sync with config("unicode") from Chromium's build/config/win/BUILD.gn:
+# https://source.chromium.org/chromium/chromium/src/+/main:build/config/win/BUILD.gn;l=570;drc=804d5a91d49d0ad79d3d5529e6ba2610225cfe55
+CRASHPAD_WINDOWS_UNICODE_COPTS = [
+ "-DUNICODE",
+ "-D_UNICODE",
+]
+
+# Keep in sync with config("winver") from Chromium's build/config/win/BUILD.gn:
+# https://source.chromium.org/chromium/chromium/src/+/main:build/config/win/BUILD.gn;l=287;drc=804d5a91d49d0ad79d3d5529e6ba2610225cfe55
+CRASHPAD_WINDOWS_WINVER_COPTS = [
+ "-DNTDDI_VERSION=NTDDI_WIN10_FE",
+ "-D_WIN32_WINNT=0x0A00",
+ "-DWINVER=0x0A00",
+]
+
+# Keep in sync with config("nominmax") from Chromium's build/config/win/BUILD.gn:
+# https://source.chromium.org/chromium/chromium/src/+/main:build/config/win/BUILD.gn;l=592;drc=804d5a91d49d0ad79d3d5529e6ba2610225cfe55
+CRASHPAD_WINDOWS_NOMINMAX_COPTS = [
+ "-DNOMINMAX",
+]
+
+# Keep in sync with config("lean_and_mean") from Chromium's build/config/win/BUILD.gn:
+# https://source.chromium.org/chromium/chromium/src/+/main:build/config/win/BUILD.gn;l=582;drc=804d5a91d49d0ad79d3d5529e6ba2610225cfe55
+CRASHPAD_WINDOWS_LEAN_AND_MEAN_COPTS = [
+ "-DWIN32_LEAN_AND_MEAN",
+]
+
+# Keep in sync with config("runtime_library") from Chromium's build/config/win/BUILD.gn:
+# https://source.chromium.org/chromium/chromium/src/+/main:build/config/win/BUILD.gn;l=216;drc=804d5a91d49d0ad79d3d5529e6ba2610225cfe55
+CRASHPAD_WINDOWS_RUNTIME_LIBRARY_COPTS = [
+ "-D__STD_C",
+ "-D_CRT_RAND_S",
+ "-D_CRT_SECURE_NO_DEPRECATE",
+ "-D_SCL_SECURE_NO_DEPRECATE",
+ "-D_ATL_NO_OPENGL",
+ "-D_WINDOWS",
+ "-DCERT_CHAIN_PARA_HAS_EXTRA_FIELDS",
+ "-DPSAPI_VERSION=2",
+ "-DWIN32",
+ "-D_SECURE_ATL",
+ "-DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP",
+]
+
+# Keep in sync with config("no_exceptions") from Chromium's build/config/compiler/BUILD.gn:
+# https://source.chromium.org/chromium/chromium/src/+/main:build/config/compiler/BUILD.gn;l=1862;drc=cf59bae1055c82caefd5c5f95250ee5f3b4ee05b
+CRASHPAD_WINDOWS_NO_EXCEPTIONS_COPTS = [
+ "-D_HAS_EXCEPTIONS=0",
+]
+
+CRASHPAD_MINI_CHROMIUM_INCLUDES = [
+ "-Ithird_party/mini_chromium/mini_chromium",
+]
+
+WINDOWS_COPTS = CRASHPAD_MINI_CHROMIUM_INCLUDES + CRASHPAD_WINDOWS_UNICODE_COPTS + CRASHPAD_WINDOWS_WINVER_COPTS + CRASHPAD_WINDOWS_NOMINMAX_COPTS + CRASHPAD_WINDOWS_LEAN_AND_MEAN_COPTS + CRASHPAD_WINDOWS_RUNTIME_LIBRARY_COPTS + CRASHPAD_WINDOWS_NO_EXCEPTIONS_COPTS
+DEFAULT_COPTS = CRASHPAD_MINI_CHROMIUM_INCLUDES + ["-Wa,--noexecstack", "-Wno-non-virtual-dtor"]
+
+CRASHPAD_COMMON_COPTS_SELECTOR = {
+ "//tools/cc_target_os:windows": WINDOWS_COPTS,
+ "//conditions:default": DEFAULT_COPTS,
+}
+
+CRASHPAD_COMMON_COPTS = select(CRASHPAD_COMMON_COPTS_SELECTOR) + CRASHPAD_COMPAT_INCLUDES_COPTS
diff --git a/handler/BUILD.bazel b/handler/BUILD.bazel
new file mode 100644
index 0000000..3978cdf
--- /dev/null
+++ b/handler/BUILD.bazel
@@ -0,0 +1,346 @@
+# Copyright 2018 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.
+
+load("//third_party/crashpad:copts.bzl", "CRASHPAD_COMMON_COPTS")
+load(
+ "//tools/build_defs/apple:macos.bzl",
+ "macos_build_test",
+ "macos_command_line_application",
+)
+load("//tools/build_defs/apple:ios.bzl", "ios_unit_test")
+
+licenses(["notice"])
+
+package(
+ default_visibility = [
+ "//third_party/crashpad:__subpackages__",
+ "//third_party/crashpad:clients",
+ ],
+)
+
+MACOS_MINIMUM_OS_VERSION = "10.13"
+
+CRASHPAD_TEST_SOURCES = [
+ "minidump_to_upload_parameters_test.cc",
+]
+
+cc_library(
+ name = "handler_lib",
+ srcs = [
+ "prune_crash_reports_thread.cc",
+ "prune_crash_reports_thread.h",
+ "user_stream_data_source.cc",
+ "user_stream_data_source.h",
+ "handler_main.cc",
+ ] + select({
+ "//tools/cc_target_os:platform_macos": [
+ "mac/file_limit_annotation.cc",
+ "mac/file_limit_annotation.h",
+ "mac/crash_report_exception_handler.cc",
+ "mac/crash_report_exception_handler.h",
+ "mac/exception_handler_server.cc",
+ ],
+ "//tools/cc_target_os:windows": [
+ "win/crash_report_exception_handler.cc",
+ "win/crash_report_exception_handler.h",
+ ],
+ "//conditions:default": [
+ "linux/capture_snapshot.cc",
+ "linux/capture_snapshot.h",
+ "linux/crash_report_exception_handler.cc",
+ "linux/crash_report_exception_handler.h",
+ "linux/exception_handler_server.cc",
+ ],
+ }) + select({
+ "//tools/cc_target_os:chromiumos": [
+ "linux/cros_crash_report_exception_handler.cc",
+ "linux/cros_crash_report_exception_handler.h",
+ ],
+ "//conditions:default": [],
+ }),
+ hdrs = [
+ "handler_main.h",
+ ] + select({
+ "//tools/cc_target_os:apple": [
+ "mac/exception_handler_server.h",
+ ],
+ "//tools/cc_target_os:windows": [],
+ "//conditions:default": [
+ "linux/exception_handler_server.h",
+ ],
+ }),
+ copts = CRASHPAD_COMMON_COPTS + [
+ "-Wno-non-virtual-dtor",
+ ],
+ features = ["-use_header_modules"],
+ deps = [
+ ":common",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/client",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/minidump",
+ "//third_party/crashpad/crashpad/snapshot",
+ "//third_party/crashpad/crashpad/tools:tool_support",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ] + select({
+ "//tools/cc_target_os:platform_macos": [
+ "//third_party/crashpad/crashpad/util:mach_interfaces",
+ "//third_party/crashpad/crashpad/util:util_mac",
+ "//third_party/mini_chromium:base_mac",
+ ],
+ "//tools/cc_target_os:platform_ios": [
+ ],
+ "//tools/cc_target_os:windows": [
+ "//third_party/crashpad/crashpad/util:exception_handler_server",
+ ],
+ "//conditions:default": [
+ "//third_party/libcap",
+ ],
+ }),
+)
+
+cc_library(
+ name = "common",
+ srcs = [
+ "crash_report_upload_thread.cc",
+ "minidump_to_upload_parameters.cc",
+ ] + select({
+ "//tools/cc_target_os:apple": [
+ "mac/file_limit_annotation.cc",
+ ],
+ "//conditions:default": [],
+ }),
+ hdrs = [
+ "crash_report_upload_thread.h",
+ "minidump_to_upload_parameters.h",
+ ] + select({
+ "//tools/cc_target_os:apple": [
+ "mac/file_limit_annotation.h",
+ ],
+ "//conditions:default": [],
+ }),
+ copts = CRASHPAD_COMMON_COPTS,
+ features = ["-use_header_modules"],
+ deps = [
+ "//third_party/crashpad/crashpad/client:common",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/snapshot",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ] + select({
+ "//tools/cc_target_os:platform_macos": [
+ "//third_party/mini_chromium:base_mac",
+ "//third_party/crashpad/crashpad/util:mach_interfaces",
+ "//third_party/crashpad/crashpad/util:util_mac",
+ "//third_party/crashpad/crashpad/util:exception_handler_server",
+ ],
+ "//tools/cc_target_os:platform_ios": [
+ "//third_party/crashpad/crashpad/util:util_mac",
+ ],
+ "//conditions:default": [
+ ],
+ }),
+)
+
+cc_library(
+ name = "handler_mac_lib",
+ srcs = ["main.cc"],
+ copts = CRASHPAD_COMMON_COPTS,
+ tags = ["maconly"],
+ deps = [
+ ":handler_lib",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/tools:tool_support",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+macos_command_line_application(
+ name = "handler_mac",
+ bundle_id = "crashpad_handler",
+ minimum_os_version = MACOS_MINIMUM_OS_VERSION,
+ tags = ["maconly"],
+ deps = [
+ ":handler_mac_lib",
+ ],
+)
+
+cc_binary(
+ name = "handler_generic",
+ srcs = ["main.cc"],
+ copts = CRASHPAD_COMMON_COPTS,
+ tags = ["linuxonly"],
+ deps = [
+ ":handler_lib",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/client:pthread_create",
+ "//third_party/crashpad/crashpad/tools:tool_support",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+genrule(
+ name = "handler_renamed",
+ srcs = select({
+ "//tools/cc_target_os:platform_macos": [":handler_mac"],
+ "//conditions:default": [":handler_generic"],
+ }),
+ outs = ["crashpad_handler"],
+ cmd = "cp $$(echo $(SRCS) | sed 's+\\s*[^ ]*\\.dSYM[^ ]*\\s*++g') $@",
+ output_to_bindir = True,
+ tags = ["posixonly"],
+)
+
+cc_binary(
+ name = "crashpad_handler.exe",
+ srcs = ["main.cc"],
+ copts = CRASHPAD_COMMON_COPTS,
+ linkopts = [
+ # This prevents opening a console window when crashpad_handler.exe runs.
+ "/SUBSYSTEM:WINDOWS",
+ ],
+ tags = ["windowsonly"],
+ deps = [
+ ":handler_lib",
+ "//third_party/crashpad/crashpad/tools:tool_support",
+ "//third_party/crashpad/crashpad/util:exception_handler_server",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+alias(
+ name = "handler",
+ actual = select({
+ "//tools/cc_target_os:windows": "crashpad_handler.exe",
+ "//conditions:default": "handler_renamed",
+ }),
+)
+
+cc_binary(
+ name = "crashpad_handler.com",
+ srcs = ["main.cc"],
+ linkopts = [
+ "/SUBSYSTEM:CONSOLE",
+ ],
+ tags = ["windowsonly"],
+ deps = [
+ ":handler_lib",
+ "//third_party/crashpad/crashpad/tools:tool_support",
+ "//third_party/crashpad/crashpad/util:exception_handler_server",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+objc_library(
+ name = "handler_ios_test_lib",
+ testonly = 1,
+ srcs = CRASHPAD_TEST_SOURCES,
+ features = ["-layering_check"],
+ tags = ["iosonly"],
+ deps = [
+ ":common",
+ "//testing/base/public:gunit_no_google3",
+ "//third_party/apple_frameworks:XCTest",
+ "//third_party/crashpad/crashpad/snapshot",
+ "//third_party/crashpad/crashpad/snapshot:test_support",
+ "//third_party/crashpad/crashpad/test",
+ "//third_party/mini_chromium:base",
+ "//third_party/mini_chromium:testing",
+ ],
+ alwayslink = 1,
+)
+
+ios_unit_test(
+ name = "handler_ios_test",
+ minimum_os_version = "13.0",
+ runner = "//testing/utp/ios:IOS_LATEST",
+ tags = ["iosonly"],
+ deps = [
+ ":handler_ios_test_lib",
+ "//third_party/objective_c/google_toolbox_for_mac:GTM_GoogleTestRunner_GTM_USING_XCTEST",
+ ],
+)
+
+cc_test(
+ name = "handler_test",
+ srcs = CRASHPAD_TEST_SOURCES + select({
+ "//tools/cc_target_os:platform_macos": [],
+ "//tools/cc_target_os:windows": [
+ "crashpad_handler_test.cc",
+ ],
+ "//conditions:default": [
+ "linux/exception_handler_server_test.cc",
+ ],
+ }),
+ copts = CRASHPAD_COMMON_COPTS + [
+ "-Wno-non-virtual-dtor",
+ ],
+ data = select({
+ "//tools/cc_target_os:platform_macos": [],
+ "//tools/cc_target_os:windows": [
+ ":crashpad_handler_test_extended_handler",
+ ":fake_handler_that_crashes_at_startup",
+ ],
+ "//conditions:default": [],
+ }),
+ features = ["-use_header_modules"],
+ deps = [
+ ":common",
+ ":handler_lib",
+ "//testing/base/public:gunit_no_google3",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/client",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/minidump:test_support",
+ "//third_party/crashpad/crashpad/snapshot",
+ "//third_party/crashpad/crashpad/snapshot:test_support",
+ "//third_party/crashpad/crashpad/test",
+ "//third_party/crashpad/crashpad/test:googlemock_main",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+cc_binary(
+ name = "crashpad_handler_test_extended_handler",
+ testonly = True,
+ srcs = [
+ "crashpad_handler_test_extended_handler.cc",
+ ],
+ copts = CRASHPAD_COMMON_COPTS,
+ features = ["-use_header_modules"],
+ deps = [
+ ":handler_lib",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/minidump:test_support",
+ "//third_party/crashpad/crashpad/tools:tool_support",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+cc_binary(
+ name = "fake_handler_that_crashes_at_startup",
+ testonly = True,
+ srcs = ["win/fake_handler_that_crashes_at_startup.cc"],
+ tags = ["windowsonly"],
+)
+
+macos_build_test(
+ name = "handler_mac_build_test",
+ minimum_os_version = MACOS_MINIMUM_OS_VERSION,
+ tags = ["maconly"],
+ targets = [":handler_mac_lib"],
+)
diff --git a/handler/win/wer/BUILD.bazel b/handler/win/wer/BUILD.bazel
new file mode 100644
index 0000000..7206737
--- /dev/null
+++ b/handler/win/wer/BUILD.bazel
@@ -0,0 +1,63 @@
+load("//third_party/crashpad:copts.bzl", "CRASHPAD_COMMON_COPTS")
+
+licenses(["notice"])
+
+package(
+ default_visibility = [
+ "//third_party/crashpad:__subpackages__",
+ "//third_party/crashpad:clients",
+ ],
+)
+
+cc_library(
+ name = "crashpad_wer_handler",
+ srcs = [
+ "crashpad_wer.cc",
+ ],
+ hdrs = [
+ "crashpad_wer.h",
+ ],
+ copts = CRASHPAD_COMMON_COPTS,
+ features = ["-use_header_modules"],
+ tags = ["windowsonly"],
+ deps = [
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/util:util_registration_protocol",
+ ],
+)
+
+cc_binary(
+ name = "crashpad_wer.dll",
+ srcs = [
+ "crashpad_wer_main.cc",
+ ],
+ copts = CRASHPAD_COMMON_COPTS,
+ features = ["-use_header_modules"],
+ linkopts = ["/DLL"],
+ linkshared = True,
+ tags = ["windowsonly"],
+ win_def_file = "crashpad_wer.def",
+ deps = [
+ ":crashpad_wer_handler",
+ ],
+)
+
+cc_test(
+ name = "crashpad_wer_test",
+ srcs = [
+ "crashpad_wer_module_unittest.cc",
+ ],
+ copts = CRASHPAD_COMMON_COPTS,
+ data = [
+ ":crashpad_wer.dll",
+ ],
+ features = ["-use_header_modules"],
+ tags = ["windowsonly"],
+ deps = [
+ "//testing/base/public:gunit_no_google3",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/client",
+ "//third_party/crashpad/crashpad/test",
+ "//third_party/crashpad/crashpad/test:googlemock_main",
+ ],
+)
diff --git a/minidump/BUILD.bazel b/minidump/BUILD.bazel
new file mode 100644
index 0000000..2996c5b
--- /dev/null
+++ b/minidump/BUILD.bazel
@@ -0,0 +1,247 @@
+# Copyright 2018 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.
+
+load("//third_party/crashpad:copts.bzl", "CRASHPAD_COMMON_COPTS")
+load("//tools/build_defs/apple:ios.bzl", "ios_unit_test")
+
+licenses(["notice"])
+
+package(
+ default_visibility = ["//visibility:public"],
+)
+
+CRASHPAD_TEST_SOURCES = [
+ "minidump_annotation_writer_test.cc",
+ "minidump_byte_array_writer_test.cc",
+ "minidump_context_writer_test.cc",
+ "minidump_crashpad_info_writer_test.cc",
+ "minidump_exception_writer_test.cc",
+ "minidump_file_writer_test.cc",
+ "minidump_handle_writer_test.cc",
+ "minidump_memory_info_writer_test.cc",
+ "minidump_memory_writer_test.cc",
+ "minidump_misc_info_writer_test.cc",
+ "minidump_module_crashpad_info_writer_test.cc",
+ "minidump_module_writer_test.cc",
+ "minidump_rva_list_writer_test.cc",
+ "minidump_simple_string_dictionary_writer_test.cc",
+ "minidump_system_info_writer_test.cc",
+ "minidump_thread_id_map_test.cc",
+ "minidump_thread_name_list_writer_test.cc",
+ "minidump_thread_writer_test.cc",
+ "minidump_unloaded_module_writer_test.cc",
+ "minidump_user_stream_writer_test.cc",
+ "minidump_writable_test.cc",
+]
+
+cc_library(
+ name = "extensions_header",
+ hdrs = [
+ "minidump_extensions.h",
+ ],
+ copts = CRASHPAD_COMMON_COPTS,
+ features = ["-use_header_modules"],
+ deps = [
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+cc_library(
+ name = "minidump",
+ srcs = [
+ "minidump_annotation_writer.cc",
+ "minidump_byte_array_writer.cc",
+ "minidump_context_writer.cc",
+ "minidump_crashpad_info_writer.cc",
+ "minidump_exception_writer.cc",
+ "minidump_file_writer.cc",
+ "minidump_handle_writer.cc",
+ "minidump_memory_info_writer.cc",
+ "minidump_memory_writer.cc",
+ "minidump_misc_info_writer.cc",
+ "minidump_module_crashpad_info_writer.cc",
+ "minidump_module_writer.cc",
+ "minidump_rva_list_writer.cc",
+ "minidump_simple_string_dictionary_writer.cc",
+ "minidump_stream_writer.cc",
+ "minidump_string_writer.cc",
+ "minidump_system_info_writer.cc",
+ "minidump_thread_id_map.cc",
+ "minidump_thread_name_list_writer.cc",
+ "minidump_thread_writer.cc",
+ "minidump_unloaded_module_writer.cc",
+ "minidump_user_extension_stream_data_source.cc",
+ "minidump_user_stream_writer.cc",
+ "minidump_writable.cc",
+ "minidump_writer_util.cc",
+ "minidump_writer_util.h",
+ ],
+ hdrs = [
+ "minidump_annotation_writer.h",
+ "minidump_byte_array_writer.h",
+ "minidump_context.h",
+ "minidump_context_writer.h",
+ "minidump_crashpad_info_writer.h",
+ "minidump_exception_writer.h",
+ "minidump_extensions.h",
+ "minidump_file_writer.h",
+ "minidump_handle_writer.h",
+ "minidump_memory_info_writer.h",
+ "minidump_memory_writer.h",
+ "minidump_misc_info_writer.h",
+ "minidump_module_crashpad_info_writer.h",
+ "minidump_module_writer.h",
+ "minidump_rva_list_writer.h",
+ "minidump_simple_string_dictionary_writer.h",
+ "minidump_stream_writer.h",
+ "minidump_string_writer.h",
+ "minidump_system_info_writer.h",
+ "minidump_thread_id_map.h",
+ "minidump_thread_name_list_writer.h",
+ "minidump_thread_writer.h",
+ "minidump_unloaded_module_writer.h",
+ "minidump_user_extension_stream_data_source.h",
+ "minidump_user_stream_writer.h",
+ "minidump_writable.h",
+ ],
+ copts = CRASHPAD_COMMON_COPTS,
+ features = ["-use_header_modules"],
+ deps = [
+ ":format",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/snapshot",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+# :format is the only part of minidump that snapshot may depend on.
+cc_library(
+ name = "format",
+ srcs = [
+ "minidump_extensions.cc",
+ ],
+ hdrs = [
+ "minidump_context.h",
+ "minidump_extensions.h",
+ ],
+ copts = CRASHPAD_COMMON_COPTS,
+ features = ["-use_header_modules"],
+ deps = [
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/snapshot:context",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+cc_library(
+ name = "test_support",
+ testonly = True,
+ srcs = [
+ "test/minidump_byte_array_writer_test_util.cc",
+ "test/minidump_context_test_util.cc",
+ "test/minidump_file_writer_test_util.cc",
+ "test/minidump_memory_writer_test_util.cc",
+ "test/minidump_rva_list_test_util.cc",
+ "test/minidump_string_writer_test_util.cc",
+ "test/minidump_user_extension_stream_util.cc",
+ "test/minidump_writable_test_util.cc",
+ ],
+ hdrs = [
+ "test/minidump_byte_array_writer_test_util.h",
+ "test/minidump_context_test_util.h",
+ "test/minidump_file_writer_test_util.h",
+ "test/minidump_memory_writer_test_util.h",
+ "test/minidump_rva_list_test_util.h",
+ "test/minidump_string_writer_test_util.h",
+ "test/minidump_user_extension_stream_util.h",
+ "test/minidump_writable_test_util.h",
+ ],
+ copts = CRASHPAD_COMMON_COPTS,
+ deps = [
+ ":minidump",
+ "//testing/base/public:gunit_no_google3",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/snapshot",
+ "//third_party/crashpad/crashpad/snapshot:test_support",
+ "//third_party/crashpad/crashpad/test",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+cc_test(
+ name = "minidump_test",
+ testonly = True,
+ srcs = CRASHPAD_TEST_SOURCES + [
+ "minidump_string_writer_test.cc",
+ ],
+ copts = CRASHPAD_COMMON_COPTS,
+ features = ["-use_header_modules"],
+ deps = [
+ ":minidump",
+ ":test_support",
+ "//testing/base/public:gunit_no_google3",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/snapshot",
+ "//third_party/crashpad/crashpad/snapshot:test_support",
+ "//third_party/crashpad/crashpad/test",
+ "//third_party/crashpad/crashpad/test:googlemock_main",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+objc_library(
+ name = "minidump_ios_test_lib",
+ testonly = 1,
+ # Skipping minidump_string_writer_test.cc because thet test
+ # ConvertInvalidUTF8ToUTF16 causes the iOS test runner to fail.
+ srcs = CRASHPAD_TEST_SOURCES,
+ copts = CRASHPAD_COMMON_COPTS,
+ features = ["-layering_check"],
+ tags = ["iosonly"],
+ deps = [
+ ":minidump",
+ ":test_support",
+ "//testing/base/public:gunit_no_google3",
+ "//third_party/apple_frameworks:XCTest",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/snapshot",
+ "//third_party/crashpad/crashpad/snapshot:test_support",
+ "//third_party/crashpad/crashpad/test",
+ "//third_party/mini_chromium:base",
+ "//third_party/mini_chromium:testing",
+ ],
+ alwayslink = 1,
+)
+
+ios_unit_test(
+ name = "minidump_ios_test",
+ minimum_os_version = "13.0",
+ runner = "//testing/utp/ios:IOS_LATEST",
+ tags = ["iosonly"],
+ deps = [
+ ":minidump_ios_test_lib",
+ "//third_party/objective_c/google_toolbox_for_mac:GTM_GoogleTestRunner_GTM_USING_XCTEST",
+ ],
+)
diff --git a/minimum_os.bzl b/minimum_os.bzl
new file mode 100644
index 0000000..4779f34
--- /dev/null
+++ b/minimum_os.bzl
@@ -0,0 +1,3 @@
+"""Minimum OS version definitions"""
+
+MACOS_MINIMUM_OS = "10.10"
diff --git a/snapshot/BUILD.bazel b/snapshot/BUILD.bazel
new file mode 100644
index 0000000..d944c1b
--- /dev/null
+++ b/snapshot/BUILD.bazel
@@ -0,0 +1,775 @@
+# Copyright 2018 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.
+
+load("//third_party/crashpad:copts.bzl", "CRASHPAD_COMMON_COPTS")
+load("//tools/build_defs/apple:ios.bzl", "ios_unit_test")
+load("//tools/build_defs/apple:resources.bzl", "apple_resource_group")
+
+licenses(["notice"])
+
+package(
+ default_visibility = [
+ "//third_party/crashpad:__subpackages__",
+ ],
+)
+
+CRASHPAD_SNAPSHOT_SOURCES = [
+ "annotation_snapshot.cc",
+ "capture_memory.cc",
+ "capture_memory.h",
+ "crashpad_info_client_options.cc",
+ "handle_snapshot.cc",
+ "memory_snapshot.cc",
+ "memory_snapshot_generic.h",
+ "minidump/exception_snapshot_minidump.cc",
+ "minidump/memory_snapshot_minidump.cc",
+ "minidump/minidump_annotation_reader.cc",
+ "minidump/minidump_context_converter.cc",
+ "minidump/minidump_simple_string_dictionary_reader.cc",
+ "minidump/minidump_simple_string_dictionary_reader.h",
+ "minidump/minidump_string_list_reader.cc",
+ "minidump/minidump_string_list_reader.h",
+ "minidump/minidump_string_reader.cc",
+ "minidump/minidump_string_reader.h",
+ "minidump/module_snapshot_minidump.cc",
+ "minidump/module_snapshot_minidump.h",
+ "minidump/process_snapshot_minidump.cc",
+ "minidump/system_snapshot_minidump.cc",
+ "minidump/thread_snapshot_minidump.cc",
+ "unloaded_module_snapshot.cc",
+]
+
+CRASHPAD_SNAPSHOT_HEADERS = [
+ "annotation_snapshot.h",
+ "cpu_architecture.h",
+ "cpu_context.h",
+ "crashpad_info_client_options.h",
+ "exception_snapshot.h",
+ "handle_snapshot.h",
+ "memory_map_region_snapshot.h",
+ "memory_snapshot.h",
+ "minidump/exception_snapshot_minidump.h",
+ "minidump/memory_snapshot_minidump.h",
+ "minidump/minidump_annotation_reader.h",
+ "minidump/minidump_context_converter.h",
+ "minidump/minidump_stream.h",
+ "minidump/process_snapshot_minidump.h",
+ "minidump/system_snapshot_minidump.h",
+ "minidump/thread_snapshot_minidump.h",
+ "module_snapshot.h",
+ "process_snapshot.h",
+ "system_snapshot.h",
+ "thread_snapshot.h",
+ "unloaded_module_snapshot.h",
+]
+
+CRASHPAD_SNAPSHOT_TEXTUAL_HEADERS = [
+ "snapshot_constants.h",
+]
+
+CRASHPAD_SNAPSHOT_MACOS_SOURCES = [
+ "mac/cpu_context_mac.cc",
+ "mac/exception_snapshot_mac.cc",
+ "mac/mach_o_image_annotations_reader.cc",
+ "mac/mach_o_image_reader.cc",
+ "mac/mach_o_image_segment_reader.cc",
+ "mac/mach_o_image_symbol_table_reader.cc",
+ "mac/mach_o_image_symbol_table_reader.h",
+ "mac/module_snapshot_mac.cc",
+ "mac/process_reader_mac.cc",
+ "mac/process_snapshot_mac.cc",
+ "mac/process_types.cc",
+ "mac/process_types/custom.cc",
+ "mac/system_snapshot_mac.cc",
+ "mac/thread_snapshot_mac.cc",
+]
+
+CRASHPAD_SNAPSHOT_MACOS_HEADERS = [
+ "mac/cpu_context_mac.h",
+ "mac/exception_snapshot_mac.h",
+ "mac/mach_o_image_annotations_reader.h",
+ "mac/mach_o_image_reader.h",
+ "mac/mach_o_image_segment_reader.h",
+ "mac/module_snapshot_mac.h",
+ "mac/process_reader_mac.h",
+ "mac/process_snapshot_mac.h",
+ "mac/process_types.h",
+ "mac/process_types/internal.h",
+ "mac/process_types/traits.h",
+ "mac/system_snapshot_mac.h",
+ "mac/thread_snapshot_mac.h",
+]
+
+CRASHPAD_SNAPSHOT_MACOS_TEXTUAL_HEADERS = [
+ "mac/process_types/all.proctype",
+ "mac/process_types/annotation.proctype",
+ "mac/process_types/crashpad_info.proctype",
+ "mac/process_types/crashreporterclient.proctype",
+ "mac/process_types/dyld_images.proctype",
+ "mac/process_types/flavors.h",
+ "mac/process_types/loader.proctype",
+ "mac/process_types/nlist.proctype",
+]
+
+CRASHPAD_SNAPSHOT_IOS_SOURCES = [
+ "ios/exception_snapshot_ios_intermediate_dump.cc",
+ "ios/intermediate_dump_reader_util.cc",
+ "ios/memory_snapshot_ios_intermediate_dump.cc",
+ "ios/module_snapshot_ios_intermediate_dump.cc",
+ "ios/process_snapshot_ios_intermediate_dump.cc",
+ "ios/system_snapshot_ios_intermediate_dump.cc",
+ "ios/thread_snapshot_ios_intermediate_dump.cc",
+ "mac/cpu_context_mac.cc",
+]
+
+CRASHPAD_SNAPSHOT_IOS_HEADERS = [
+ "ios/exception_snapshot_ios_intermediate_dump.h",
+ "ios/intermediate_dump_reader_util.h",
+ "ios/memory_snapshot_ios_intermediate_dump.h",
+ "ios/module_snapshot_ios_intermediate_dump.h",
+ "ios/process_snapshot_ios_intermediate_dump.h",
+ "ios/system_snapshot_ios_intermediate_dump.h",
+ "ios/thread_snapshot_ios_intermediate_dump.h",
+ "mac/cpu_context_mac.h",
+]
+
+CRASHPAD_SNAPSHOT_POSIX_SOURCES = [
+ "posix/timezone.cc",
+]
+
+CRASHPAD_SNAPSHOT_POSIX_HEADERS = [
+ "posix/timezone.h",
+]
+
+CRASHPAD_SNAPSHOT_LINUX_SOURCES = [
+ "crashpad_types/crashpad_info_reader.cc",
+ "crashpad_types/image_annotation_reader.cc",
+ "elf/elf_dynamic_array_reader.cc",
+ "elf/elf_image_reader.cc",
+ "elf/elf_symbol_table_reader.cc",
+ "elf/module_snapshot_elf.cc",
+ "linux/capture_memory_delegate_linux.h",
+ "linux/capture_memory_delegate_linux.cc",
+ "linux/cpu_context_linux.cc",
+ "linux/cpu_context_linux.h",
+ "linux/debug_rendezvous.cc",
+ "linux/exception_snapshot_linux.cc",
+ "linux/process_reader_linux.cc",
+ "linux/process_snapshot_linux.cc",
+ "linux/system_snapshot_linux.cc",
+ "linux/thread_snapshot_linux.cc",
+ "sanitized/memory_snapshot_sanitized.cc",
+ "sanitized/module_snapshot_sanitized.cc",
+ "sanitized/process_snapshot_sanitized.cc",
+ "sanitized/sanitization_information.cc",
+ "sanitized/thread_snapshot_sanitized.cc",
+]
+
+CRASHPAD_SNAPSHOT_LINUX_HEADERS = [
+ "crashpad_types/crashpad_info_reader.h",
+ "crashpad_types/image_annotation_reader.h",
+ "elf/elf_dynamic_array_reader.h",
+ "elf/elf_image_reader.h",
+ "elf/elf_symbol_table_reader.h",
+ "elf/module_snapshot_elf.h",
+ "linux/debug_rendezvous.h",
+ "linux/exception_snapshot_linux.h",
+ "linux/process_reader_linux.h",
+ "linux/process_snapshot_linux.h",
+ "linux/system_snapshot_linux.h",
+ "linux/thread_snapshot_linux.h",
+ "sanitized/memory_snapshot_sanitized.h",
+ "sanitized/module_snapshot_sanitized.h",
+ "sanitized/process_snapshot_sanitized.h",
+ "sanitized/sanitization_information.h",
+ "sanitized/thread_snapshot_sanitized.h",
+]
+
+CRASHPAD_SNAPSHOT_LINUX_TEXTUAL_HEADERS = [
+ "linux/signal_context.h",
+]
+
+CRASHPAD_SNAPSHOT_WINDOWS_SOURCES = [
+ "crashpad_types/crashpad_info_reader.cc",
+ "crashpad_types/crashpad_info_reader.h",
+ "win/capture_memory_delegate_win.cc",
+ "win/capture_memory_delegate_win.h",
+ "win/cpu_context_win.cc",
+ "win/cpu_context_win.h",
+ "win/exception_snapshot_win.cc",
+ "win/exception_snapshot_win.h",
+ "win/memory_map_region_snapshot_win.cc",
+ "win/memory_map_region_snapshot_win.h",
+ "win/module_snapshot_win.cc",
+ "win/module_snapshot_win.h",
+ "win/pe_image_annotations_reader.cc",
+ "win/pe_image_annotations_reader.h",
+ "win/pe_image_reader.cc",
+ "win/pe_image_reader.h",
+ "win/pe_image_resource_reader.cc",
+ "win/pe_image_resource_reader.h",
+ "win/process_reader_win.cc",
+ "win/process_reader_win.h",
+ "win/process_snapshot_win.cc",
+ "win/process_snapshot_win.h",
+ "win/process_subrange_reader.cc",
+ "win/process_subrange_reader.h",
+ "win/system_snapshot_win.cc",
+ "win/system_snapshot_win.h",
+ "win/thread_snapshot_win.cc",
+ "win/thread_snapshot_win.h",
+]
+
+CRASHPAD_SNAPSHOT_WINDOWS_HEADERS = [
+]
+
+CRASHPAD_SNAPSHOT_X86_SOURCES = [
+ "x86/cpuid_reader.cc",
+ "x86/cpuid_reader.h",
+]
+
+CRASHPAD_TEST_SOURCES = [
+ "cpu_context_test.cc",
+ "memory_snapshot_test.cc",
+ "minidump/process_snapshot_minidump_test.cc",
+]
+
+cc_library(
+ name = "snapshot",
+ srcs = CRASHPAD_SNAPSHOT_SOURCES +
+ select({
+ "//tools/cc_target_os:platform_macos": CRASHPAD_SNAPSHOT_MACOS_SOURCES +
+ CRASHPAD_SNAPSHOT_POSIX_SOURCES,
+ "//tools/cc_target_os:platform_ios": CRASHPAD_SNAPSHOT_IOS_SOURCES +
+ CRASHPAD_SNAPSHOT_POSIX_SOURCES,
+ "//tools/cc_target_os:windows": CRASHPAD_SNAPSHOT_WINDOWS_SOURCES,
+ "//conditions:default": CRASHPAD_SNAPSHOT_LINUX_SOURCES +
+ CRASHPAD_SNAPSHOT_POSIX_SOURCES,
+ }) +
+ select({
+ "//tools/target_cpu:k8": CRASHPAD_SNAPSHOT_X86_SOURCES,
+ "//tools/target_cpu:haswell": CRASHPAD_SNAPSHOT_X86_SOURCES,
+ "//tools/target_cpu:x86": CRASHPAD_SNAPSHOT_X86_SOURCES,
+ "//tools/target_cpu:x86_64": CRASHPAD_SNAPSHOT_X86_SOURCES,
+ "//conditions:default": [],
+ }),
+ hdrs = CRASHPAD_SNAPSHOT_HEADERS +
+ select({
+ "//tools/cc_target_os:platform_macos": CRASHPAD_SNAPSHOT_MACOS_HEADERS +
+ CRASHPAD_SNAPSHOT_POSIX_HEADERS,
+ "//tools/cc_target_os:platform_ios": CRASHPAD_SNAPSHOT_IOS_HEADERS +
+ CRASHPAD_SNAPSHOT_POSIX_HEADERS,
+ "//tools/cc_target_os:windows": CRASHPAD_SNAPSHOT_WINDOWS_HEADERS,
+ "//conditions:default": CRASHPAD_SNAPSHOT_LINUX_HEADERS +
+ CRASHPAD_SNAPSHOT_POSIX_HEADERS,
+ }),
+ copts = CRASHPAD_COMMON_COPTS,
+ features = ["-use_header_modules"],
+ linkopts = select({
+ "//tools/cc_target_os:platform_macos": [],
+ "//tools/cc_target_os:windows": [
+ "powrprof.lib",
+ ],
+ "//conditions:default": [],
+ }),
+ textual_hdrs = CRASHPAD_SNAPSHOT_TEXTUAL_HEADERS + select({
+ "//tools/cc_target_os:platform_macos": CRASHPAD_SNAPSHOT_MACOS_TEXTUAL_HEADERS,
+ "//tools/cc_target_os:windows": [],
+ "//conditions:default": CRASHPAD_SNAPSHOT_LINUX_TEXTUAL_HEADERS,
+ }),
+ visibility = [
+ "//third_party/crashpad:__subpackages__",
+ "//third_party/crashpad:clients",
+ ],
+ deps = [
+ ":context",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/client:common",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/minidump:extensions_header",
+ "//third_party/crashpad/crashpad/minidump:format",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ] + select({
+ "//tools/cc_target_os:apple": [
+ "//third_party/crashpad/crashpad/util:util_mac",
+ "//third_party/mini_chromium:base_mac",
+ ],
+ "//conditions:default": [],
+ }),
+)
+
+# :context is the only part of snapshot that minidump may depend on.
+cc_library(
+ name = "context",
+ srcs = [
+ "cpu_context.cc",
+ ],
+ hdrs = [
+ "cpu_architecture.h",
+ "cpu_context.h",
+ ],
+ copts = CRASHPAD_COMMON_COPTS,
+ features = ["-use_header_modules"],
+ deps = [
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+cc_library(
+ name = "test_support",
+ testonly = True,
+ srcs = [
+ "test/test_cpu_context.cc",
+ "test/test_exception_snapshot.cc",
+ "test/test_memory_map_region_snapshot.cc",
+ "test/test_memory_snapshot.cc",
+ "test/test_module_snapshot.cc",
+ "test/test_process_snapshot.cc",
+ "test/test_system_snapshot.cc",
+ "test/test_thread_snapshot.cc",
+ ],
+ hdrs = [
+ "test/test_cpu_context.h",
+ "test/test_exception_snapshot.h",
+ "test/test_memory_map_region_snapshot.h",
+ "test/test_memory_snapshot.h",
+ "test/test_module_snapshot.h",
+ "test/test_process_snapshot.h",
+ "test/test_system_snapshot.h",
+ "test/test_thread_snapshot.h",
+ ],
+ copts = CRASHPAD_COMMON_COPTS,
+ deps = [
+ ":snapshot",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+objc_library(
+ name = "OpenCL",
+ tags = ["maconly"],
+ visibility = ["//visibility:private"],
+ deps = ["//third_party/apple_frameworks:OpenCL"],
+)
+
+apple_resource_group(
+ name = "snapshot_ios_test_resource",
+ structured_resources = glob(["crashpad_test_data/snapshot/ios/testdata/**"]),
+ visibility = ["//visibility:private"],
+)
+
+objc_library(
+ name = "snapshot_ios_test_lib",
+ testonly = 1,
+ srcs = CRASHPAD_TEST_SOURCES + [
+ "ios/process_snapshot_ios_intermediate_dump_test.cc",
+ "mac/cpu_context_mac_test.cc",
+ ],
+ copts = CRASHPAD_COMMON_COPTS,
+ data = [":snapshot_ios_test_resource"],
+ features = ["-layering_check"],
+ tags = ["iosonly"],
+ deps = [
+ ":snapshot",
+ ":test_support",
+ "//testing/base/public:gunit_no_google3",
+ "//third_party/apple_frameworks:XCTest",
+ "//third_party/crashpad/crashpad/minidump",
+ "//third_party/crashpad/crashpad/test",
+ "//third_party/mini_chromium:base",
+ "//third_party/mini_chromium:testing",
+ ],
+ alwayslink = 1,
+)
+
+ios_unit_test(
+ name = "snapshot_ios_test",
+ minimum_os_version = "13.0",
+ runner = "//testing/utp/ios:IOS_LATEST",
+ tags = ["iosonly"],
+ deps = [
+ ":snapshot_ios_test_lib",
+ "//third_party/objective_c/google_toolbox_for_mac:GTM_GoogleTestRunner_GTM_USING_XCTEST",
+ ],
+)
+
+cc_test(
+ name = "snapshot_test",
+ srcs = CRASHPAD_TEST_SOURCES + select({
+ "//tools/cc_target_os:platform_macos": [
+ "crashpad_info_client_options_test.cc",
+ "mac/cpu_context_mac_test.cc",
+ "mac/mach_o_image_annotations_reader_test.cc",
+ "mac/mach_o_image_reader_test.cc",
+ "mac/mach_o_image_segment_reader_test.cc",
+ "mac/process_reader_mac_test.cc",
+ "mac/process_types_test.cc",
+ "mac/system_snapshot_mac_test.cc",
+ "posix/timezone_test.cc",
+ ],
+ "//tools/cc_target_os:platform_ios": [],
+ "//tools/cc_target_os:windows": [
+ "crashpad_info_client_options_test.cc",
+ "crashpad_types/crashpad_info_reader_test.cc",
+ "win/cpu_context_win_test.cc",
+ "win/exception_snapshot_win_test.cc",
+ "win/extra_memory_ranges_test.cc",
+ "win/module_snapshot_win_test.cc",
+ "win/pe_image_reader_test.cc",
+ "win/process_reader_win_test.cc",
+ "win/process_snapshot_win_test.cc",
+ "win/system_snapshot_win_test.cc",
+ ],
+ "//conditions:default": [
+ "crashpad_types/crashpad_info_reader_test.cc",
+ "crashpad_types/image_annotation_reader_test.cc",
+ "elf/elf_image_reader_test.cc",
+ "elf/elf_image_reader_test_note.S",
+ "linux/debug_rendezvous_test.cc",
+ "linux/exception_snapshot_linux_test.cc",
+ "linux/process_reader_linux_test.cc",
+ "linux/system_snapshot_linux_test.cc",
+ "linux/test_modules.cc",
+ "linux/test_modules.h",
+ "posix/timezone_test.cc",
+ "sanitized/process_snapshot_sanitized_test.cc",
+ "sanitized/sanitization_information_test.cc",
+ ],
+ }),
+ copts = CRASHPAD_COMMON_COPTS + select({
+ "//conditions:default": ["-ldl"],
+ }),
+ data = [
+ ":crashpad_snapshot_test_module",
+ ":crashpad_snapshot_test_module_large",
+ ":crashpad_snapshot_test_module_small",
+ ] + select({
+ "//tools/cc_target_os:platform_macos": [
+ ":crashpad_snapshot_test_module_crashy_initializer.so",
+ ":crashpad_snapshot_test_no_op",
+ ],
+ "//tools/cc_target_os:windows": [
+ ":crashpad_snapshot_test_annotations",
+ ":crashpad_snapshot_test_crashing_child",
+ ":crashpad_snapshot_test_dump_without_crashing",
+ ":crashpad_snapshot_test_extra_memory_ranges",
+ ":crashpad_snapshot_test_image_reader",
+ ":crashpad_snapshot_test_image_reader_module.dll",
+ ],
+ "//conditions:default": [
+ ":crashpad_snapshot_test_both_dt_hash_styles.so",
+ ],
+ }),
+ features = ["-use_header_modules"],
+ linkopts = select({
+ "//tools/cc_target_os:platform_macos": [],
+ "//tools/cc_target_os:windows": [],
+ "//conditions:default": [
+ "-ldl",
+ "-Wl,--dynamic-list",
+ "$(location :elf/test_exported_symbols.sym.lds)",
+ ],
+ }),
+ deps = [
+ ":context",
+ ":snapshot",
+ ":test_support",
+ "//testing/base/public:gunit_no_google3",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/client:common",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/test",
+ "//third_party/crashpad/crashpad/test:googlemock_main",
+ "//third_party/crashpad/crashpad/minidump:format",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ] + select({
+ "//tools/cc_target_os:platform_macos": [
+ ":OpenCL",
+ "//third_party/crashpad/crashpad/util:util_mac",
+ "//third_party/mini_chromium:base_mac",
+ ],
+ "//tools/cc_target_os:platform_ios": [
+ "//third_party/crashpad/crashpad/minidump",
+ ],
+ "//tools/cc_target_os:windows": [
+ "//third_party/crashpad/crashpad/util:exception_handler_server",
+ "//third_party/crashpad/crashpad/client",
+ ],
+ "//conditions:default": [
+ ":elf/test_exported_symbols.sym.lds",
+ ],
+ }),
+)
+
+alias(
+ name = "crashpad_snapshot_test_module",
+ actual = select({
+ "//tools/cc_target_os:windows": ":crashpad_snapshot_test_module.dll",
+ "//conditions:default": ":crashpad_snapshot_test_module.so",
+ }),
+)
+
+cc_binary(
+ name = "crashpad_snapshot_test_module.so",
+ testonly = True,
+ srcs = [
+ "crashpad_info_client_options_test_module.cc",
+ ],
+ copts = CRASHPAD_COMMON_COPTS,
+ features = ["-use_header_modules"],
+ linkshared = True,
+ tags = ["posixonly"],
+ deps = [
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/client",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+cc_binary(
+ name = "crashpad_snapshot_test_module.dll",
+ testonly = True,
+ srcs = [
+ "crashpad_info_client_options_test_module.cc",
+ ],
+ copts = CRASHPAD_COMMON_COPTS,
+ features = ["-use_header_modules"],
+ linkopts = ["/DLL"],
+ linkshared = True,
+ tags = ["windowsonly"],
+ deps = [
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/client",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+CRASHPAD_SNAPSHOT_TEST_MODULE_SOURCES = [
+ "crashpad_info_size_test_module.cc",
+] + select({
+ "//tools/cc_target_os:platform_macos": [],
+ "//tools/cc_target_os:windows": [],
+ "//conditions:default": [
+ "crashpad_info_size_test_note.S",
+ ],
+})
+
+alias(
+ name = "crashpad_snapshot_test_module_large",
+ actual = select({
+ "//tools/cc_target_os:windows": ":crashpad_snapshot_test_module_large.dll",
+ "//conditions:default": ":crashpad_snapshot_test_module_large.so",
+ }),
+)
+
+cc_binary(
+ name = "crashpad_snapshot_test_module_large.so",
+ testonly = True,
+ srcs = CRASHPAD_SNAPSHOT_TEST_MODULE_SOURCES,
+ copts = CRASHPAD_COMMON_COPTS + [
+ "-DCRASHPAD_INFO_SIZE_TEST_MODULE_LARGE",
+ ],
+ linkshared = True,
+ tags = ["posixonly"],
+ deps = [
+ "//third_party/mini_chromium:base",
+ ] + select({
+ "//tools/cc_target_os:platform_macos": [],
+ "//tools/cc_target_os:windows": [],
+ "//conditions:default": [
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/util",
+ ],
+ }),
+)
+
+cc_binary(
+ name = "crashpad_snapshot_test_module_large.dll",
+ testonly = True,
+ srcs = CRASHPAD_SNAPSHOT_TEST_MODULE_SOURCES,
+ copts = CRASHPAD_COMMON_COPTS + [
+ "-DCRASHPAD_INFO_SIZE_TEST_MODULE_LARGE",
+ ],
+ linkopts = ["/DLL"],
+ linkshared = True,
+ tags = ["windowsonly"],
+ deps = [
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+alias(
+ name = "crashpad_snapshot_test_module_small",
+ actual = select({
+ "//tools/cc_target_os:windows": ":crashpad_snapshot_test_module_small.dll",
+ "//conditions:default": ":crashpad_snapshot_test_module_small.so",
+ }),
+)
+
+cc_binary(
+ name = "crashpad_snapshot_test_module_small.so",
+ testonly = True,
+ srcs = CRASHPAD_SNAPSHOT_TEST_MODULE_SOURCES,
+ copts = CRASHPAD_COMMON_COPTS + [
+ "-DCRASHPAD_INFO_SIZE_TEST_MODULE_SMALL",
+ ],
+ linkshared = True,
+ tags = ["posixonly"],
+ deps = [
+ "//third_party/mini_chromium:base",
+ ] + select({
+ "//tools/cc_target_os:platform_macos": [],
+ "//tools/cc_target_os:windows": [],
+ "//conditions:default": [
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/util",
+ ],
+ }),
+)
+
+cc_binary(
+ name = "crashpad_snapshot_test_module_small.dll",
+ testonly = True,
+ srcs = CRASHPAD_SNAPSHOT_TEST_MODULE_SOURCES,
+ copts = CRASHPAD_COMMON_COPTS + [
+ "-DCRASHPAD_INFO_SIZE_TEST_MODULE_SMALL",
+ ],
+ linkopts = ["/DLL"],
+ linkshared = True,
+ tags = ["windowsonly"],
+ deps = [
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+cc_binary(
+ name = "crashpad_snapshot_test_both_dt_hash_styles.so",
+ testonly = True,
+ srcs = ["hash_types_test.cc"],
+ copts = CRASHPAD_COMMON_COPTS,
+ linkopts = ["-Wl,--hash-style=both"],
+ linkshared = True,
+ tags = ["linuxonly"],
+)
+
+cc_binary(
+ name = "crashpad_snapshot_test_module_crashy_initializer.so",
+ testonly = True,
+ srcs = ["mac/mach_o_image_annotations_reader_test_module_crashy_initializer.cc"],
+ copts = CRASHPAD_COMMON_COPTS,
+ linkshared = True,
+ tags = ["maconly"],
+)
+
+cc_binary(
+ name = "crashpad_snapshot_test_no_op",
+ testonly = True,
+ srcs = ["mac/mach_o_image_annotations_reader_test_no_op.cc"],
+ copts = CRASHPAD_COMMON_COPTS,
+ tags = ["maconly"],
+)
+
+cc_binary(
+ name = "crashpad_snapshot_test_annotations",
+ testonly = True,
+ srcs = ["win/crashpad_snapshot_test_annotations.cc"],
+ copts = CRASHPAD_COMMON_COPTS,
+ tags = ["windowsonly"],
+ deps = [
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/client",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+cc_binary(
+ name = "crashpad_snapshot_test_crashing_child",
+ testonly = True,
+ srcs = ["win/crashpad_snapshot_test_crashing_child.cc"],
+ copts = CRASHPAD_COMMON_COPTS,
+ tags = ["windowsonly"],
+ deps = [
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/client",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+cc_binary(
+ name = "crashpad_snapshot_test_dump_without_crashing",
+ testonly = True,
+ srcs = ["win/crashpad_snapshot_test_dump_without_crashing.cc"],
+ copts = CRASHPAD_COMMON_COPTS,
+ tags = ["windowsonly"],
+ deps = [
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/client",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+cc_binary(
+ name = "crashpad_snapshot_test_extra_memory_ranges",
+ testonly = True,
+ srcs = ["win/crashpad_snapshot_test_extra_memory_ranges.cc"],
+ copts = CRASHPAD_COMMON_COPTS,
+ tags = ["windowsonly"],
+ deps = [
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/client",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+cc_binary(
+ name = "crashpad_snapshot_test_image_reader",
+ testonly = True,
+ srcs = ["win/crashpad_snapshot_test_image_reader.cc"],
+ copts = CRASHPAD_COMMON_COPTS,
+ tags = ["windowsonly"],
+ deps = [
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/client",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+cc_binary(
+ name = "crashpad_snapshot_test_image_reader_module.dll",
+ testonly = True,
+ srcs = ["win/crashpad_snapshot_test_image_reader_module.cc"],
+ copts = CRASHPAD_COMMON_COPTS,
+ linkopts = ["/DLL"],
+ linkshared = True,
+ tags = ["windowsonly"],
+ deps = [
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/client",
+ "//third_party/mini_chromium:base",
+ ],
+)
diff --git a/test/BUILD.bazel b/test/BUILD.bazel
new file mode 100644
index 0000000..40f9d8a
--- /dev/null
+++ b/test/BUILD.bazel
@@ -0,0 +1,375 @@
+# Copyright 2018 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.
+
+load("//third_party/crashpad:copts.bzl", "CRASHPAD_COMMON_COPTS")
+load("//tools/build_defs/apple:ios.bzl", "ios_application", "ios_ui_test", "ios_unit_test")
+
+licenses(["notice"])
+
+package(
+ default_visibility = [
+ "//third_party/crashpad:__subpackages__",
+ ],
+)
+
+CRASHPAD_TEST_SOURCES = [
+ "errors.cc",
+ "file.cc",
+ "filesystem.cc",
+ "hex_string.cc",
+ "main_arguments.cc",
+ "process_type.cc",
+ "scoped_module_handle.cc",
+ "scoped_temp_dir.cc",
+ "test_paths.cc",
+]
+
+CRASHPAD_MULTIPROCESS_TEST_SOURCES = [
+ "multiprocess_exec.cc",
+]
+
+CRASHPAD_TEST_HEADERS = [
+ "errors.h",
+ "file.h",
+ "filesystem.h",
+ "gtest_death.h",
+ "hex_string.h",
+ "main_arguments.h",
+ "multiprocess.h",
+ "multiprocess_exec.h",
+ "process_type.h",
+ "scoped_guarded_page.h",
+ "scoped_module_handle.h",
+ "scoped_set_thread_name.h",
+ "scoped_temp_dir.h",
+ "test_paths.h",
+]
+
+CRASHPAD_TEST_POSIX_SOURCES = [
+ "scoped_guarded_page_posix.cc",
+ "scoped_set_thread_name_posix.cc",
+ "scoped_temp_dir_posix.cc",
+]
+
+CRASHPAD_TEST_POSIX_MULTIPROCESS_SOURCES = [
+ "multiprocess_exec_posix.cc",
+ "multiprocess_posix.cc",
+]
+
+CRASHPAD_TEST_POSIX_HEADERS = [
+]
+
+CRASHPAD_TEST_MACOS_SOURCES = [
+ "mac/dyld.cc",
+ "mac/exception_swallower.cc",
+ "mac/exception_swallower.h",
+ "mac/mach_errors.cc",
+ "mac/mach_multiprocess.cc",
+]
+
+CRASHPAD_TEST_IOS_SOURCES = [
+ "mac/exception_swallower.h",
+ "mac/mach_errors.cc",
+]
+
+CRASHPAD_TEST_MACOS_HEADERS = [
+ "mac/dyld.h",
+ "mac/mach_errors.h",
+ "mac/mach_multiprocess.h",
+]
+
+CRASHPAD_TEST_WINDOWS_SOURCES = [
+ "multiprocess_exec_win.cc",
+ "scoped_guarded_page_win.cc",
+ "scoped_set_thread_name_win.cc",
+ "scoped_temp_dir_win.cc",
+ "win/child_launcher.cc",
+ "win/child_launcher.h",
+ "win/win_child_process.cc",
+ "win/win_child_process.h",
+ "win/win_multiprocess.cc",
+ "win/win_multiprocess.h",
+ "win/win_multiprocess_with_temp_dir.cc",
+ "win/win_multiprocess_with_temp_dir.h",
+]
+
+CRASHPAD_TEST_WINDOWS_HEADERS = [
+]
+
+CRASHPAD_TEST_LINUX_SOURCES = [
+ "linux/fake_ptrace_connection.cc",
+ "linux/get_tls.cc",
+]
+
+CRASHPAD_TEST_LINUX_HEADERS = [
+ "linux/fake_ptrace_connection.h",
+ "linux/get_tls.h",
+]
+
+cc_library(
+ name = "test",
+ testonly = True,
+ srcs = CRASHPAD_TEST_SOURCES +
+ select({
+ "//tools/cc_target_os:platform_macos": CRASHPAD_TEST_POSIX_SOURCES +
+ CRASHPAD_TEST_POSIX_MULTIPROCESS_SOURCES +
+ CRASHPAD_TEST_MACOS_SOURCES +
+ CRASHPAD_MULTIPROCESS_TEST_SOURCES,
+ "//tools/cc_target_os:platform_ios": CRASHPAD_TEST_POSIX_SOURCES +
+ CRASHPAD_TEST_IOS_SOURCES,
+ "//tools/cc_target_os:windows": CRASHPAD_TEST_WINDOWS_SOURCES +
+ CRASHPAD_MULTIPROCESS_TEST_SOURCES,
+ "//conditions:default": CRASHPAD_TEST_LINUX_SOURCES +
+ CRASHPAD_TEST_POSIX_SOURCES +
+ CRASHPAD_TEST_POSIX_MULTIPROCESS_SOURCES +
+ CRASHPAD_MULTIPROCESS_TEST_SOURCES,
+ }),
+ hdrs = CRASHPAD_TEST_HEADERS +
+ select({
+ "//tools/cc_target_os:apple": CRASHPAD_TEST_POSIX_HEADERS +
+ CRASHPAD_TEST_MACOS_HEADERS,
+ "//tools/cc_target_os:windows": CRASHPAD_TEST_WINDOWS_HEADERS,
+ "//conditions:default": CRASHPAD_TEST_LINUX_HEADERS +
+ CRASHPAD_TEST_POSIX_HEADERS,
+ }),
+ copts = CRASHPAD_COMMON_COPTS,
+ linkopts = select({
+ "//tools/cc_target_os:apple": [
+ "-lbsm",
+ ],
+ "//tools/cc_target_os:windows": [
+ "shell32.lib",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//testing/base/public:gunit_no_google3",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ] + select({
+ "//tools/cc_target_os:platform_macos": [
+ "//third_party/crashpad/crashpad/handler:handler_lib",
+ "//third_party/crashpad/crashpad/snapshot",
+ "//third_party/crashpad/crashpad/util:util_mac",
+ "//third_party/mini_chromium:base_mac",
+ ],
+ "//tools/cc_target_os:platform_ios": [
+ "//third_party/crashpad/crashpad/handler:common",
+ "//third_party/crashpad/crashpad/snapshot",
+ "//third_party/crashpad/crashpad/util:util_mac",
+ "//third_party/mini_chromium:base_mac",
+ ],
+ "//conditions:default": [],
+ }),
+)
+
+Fileset(
+ name = "test_data_files",
+ out = "test_data/test",
+ entries = [
+ FilesetEntry(
+ files = [
+ "test_paths_test_data_root.txt",
+ ],
+ ),
+ ],
+)
+
+cc_test(
+ name = "test_test",
+ srcs = [
+ "hex_string_test.cc",
+ "main_arguments_test.cc",
+ "multiprocess_exec_test.cc",
+ "scoped_guarded_page_test.cc",
+ "scoped_temp_dir_test.cc",
+ "test_paths_test.cc",
+ ] + select({
+ "//tools/cc_target_os:apple": [
+ "multiprocess_posix_test.cc",
+ "mac/mach_multiprocess_test.cc",
+ ],
+ "//tools/cc_target_os:windows": [
+ "win/win_child_process_test.cc",
+ "win/win_multiprocess_test.cc",
+ ],
+ "//conditions:default": [
+ "multiprocess_posix_test.cc",
+ ],
+ }),
+ copts = CRASHPAD_COMMON_COPTS,
+ data = [
+ "test_paths_test_data_root.txt",
+ ":crashpad_test_test_multiprocess_exec_test_child",
+ ],
+ deps = [
+ ":googlemock_main",
+ ":test",
+ "//testing/base/public:gunit_no_google3",
+ "//third_party/absl/flags:flag",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+cc_binary(
+ name = "crashpad_test_test_multiprocess_exec_test_child",
+ srcs = ["multiprocess_exec_test_child.cc"],
+ copts = CRASHPAD_COMMON_COPTS,
+ deps = [
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+cc_library(
+ name = "googlemock_main",
+ testonly = True,
+ srcs = ["gtest_main.cc"],
+ copts = CRASHPAD_COMMON_COPTS + [
+ "-DCRASHPAD_TEST_LAUNCHER_GOOGLEMOCK",
+ ],
+ deps = [
+ ":test",
+ "//testing/base/public:gunit_no_google3",
+ "//third_party/mini_chromium:base",
+ ] + select({
+ "//tools/cc_target_os:android": ["//third_party/crashpad/crashpad/util"],
+ "//conditions:default": [],
+ }),
+)
+
+cc_library(
+ name = "googletest_main",
+ testonly = True,
+ srcs = ["gtest_main.cc"],
+ copts = CRASHPAD_COMMON_COPTS + [
+ "-DCRASHPAD_TEST_LAUNCHER_GOOGLETEST",
+ ],
+ deps = [
+ ":test",
+ "//testing/base/public:gunit_no_google3",
+ "//third_party/mini_chromium:base",
+ ] + select({
+ "//tools/cc_target_os:android": ["//third_party/crashpad/crashpad/util"],
+ "//conditions:default": [],
+ }),
+)
+
+objc_library(
+ name = "test_ios_test_lib",
+ testonly = 1,
+ srcs = CRASHPAD_TEST_SOURCES + [
+ "hex_string_test.cc",
+ "scoped_temp_dir_test.cc",
+ ],
+ copts = CRASHPAD_COMMON_COPTS,
+ features = ["-layering_check"],
+ tags = ["iosonly"],
+ deps = [
+ ":test",
+ "//testing/base/public:gunit_no_google3",
+ "//third_party/apple_frameworks:XCTest",
+ "//third_party/mini_chromium:base",
+ "//third_party/mini_chromium:testing",
+ ],
+ alwayslink = 1,
+)
+
+ios_unit_test(
+ name = "test_ios_test",
+ minimum_os_version = "13.0",
+ runner = "//testing/utp/ios:IOS_LATEST",
+ tags = ["iosonly"],
+ deps = [
+ ":test_ios_test_lib",
+ "//third_party/objective_c/google_toolbox_for_mac:GTM_GoogleTestRunner_GTM_USING_XCTEST",
+ ],
+)
+
+objc_library(
+ name = "test_ios_uitest_main_lib",
+ testonly = True,
+ srcs = [
+ "ios/host/cptest_application_delegate.h",
+ "ios/host/cptest_application_delegate.mm",
+ "ios/host/cptest_crash_view_controller.h",
+ "ios/host/cptest_crash_view_controller.mm",
+ "ios/host/cptest_shared_object.h",
+ "ios/host/handler_forbidden_allocators.cc",
+ "ios/host/handler_forbidden_allocators.h",
+ "ios/host/main.mm",
+ ],
+ copts = CRASHPAD_COMMON_COPTS,
+ features = ["-layering_check"],
+ tags = ["iosonly"],
+ deps = [
+ ":test",
+ "//third_party/crashpad/crashpad/client",
+ "//third_party/objective_c/eDistantObject",
+ ],
+)
+
+ios_application(
+ name = "ios_crash_xcuitests",
+ testonly = True,
+ bundle_id = "com.google.googletest.ios-crash-xcuitests",
+ families = [
+ "iphone",
+ "ipad",
+ ],
+ infoplists = ["ios/host/Info.plist"],
+ minimum_os_version = "13.0",
+ tags = ["iosonly"],
+ deps = [
+ ":test_ios_uitest_main_lib",
+ "//third_party/crashpad/crashpad/client",
+ "//third_party/objective_c/eDistantObject",
+ ],
+)
+
+objc_library(
+ name = "test_ios_uitestlib",
+ srcs = [
+ "ios/crash_type_xctest.mm",
+ "ios/host/cptest_shared_object.h",
+ ],
+ copts = CRASHPAD_COMMON_COPTS,
+ features = ["-layering_check"],
+ includes = [
+ "../",
+ ],
+ tags = ["iosonly"],
+ deps = [
+ "//third_party/crashpad/crashpad/util:util_mac",
+ "//third_party/objective_c/eDistantObject",
+ ],
+)
+
+ios_ui_test(
+ name = "test_ios_uitest",
+ timeout = "long",
+ # This test is expected to crash on nearly every test case.
+ args = [
+ "--disable_crash_reporter",
+ ],
+ minimum_os_version = "13.0",
+ runner = "//testing/utp/ios:IOS_LATEST",
+ tags = ["iosonly"],
+ test_host = ":ios_crash_xcuitests",
+ deps = [":test_ios_uitestlib"],
+)
diff --git a/third_party/lss/BUILD.bazel b/third_party/lss/BUILD.bazel
new file mode 100644
index 0000000..96dab33
--- /dev/null
+++ b/third_party/lss/BUILD.bazel
@@ -0,0 +1,27 @@
+# Copyright 2020 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.
+
+licenses(["notice"])
+
+package(
+ default_compatible_with = ["//buildenv/target:non_prod"],
+ default_visibility = ["//visibility:public"],
+)
+
+cc_library(
+ name = "lss",
+ hdrs = ["lss.h"],
+ defines = ["CRASHPAD_LSS_SOURCE_EMBEDDED"],
+ deps = ["//third_party/lss"],
+)
diff --git a/third_party/zlib/BUILD.bazel b/third_party/zlib/BUILD.bazel
new file mode 100644
index 0000000..ba6f815
--- /dev/null
+++ b/third_party/zlib/BUILD.bazel
@@ -0,0 +1,23 @@
+# Description:
+# zlib, a free, highly-portable, general-purpose lossless data-compression
+# library. This BUILD file provides rules that applications can use to link
+# with zlib.
+
+licenses(["notice"])
+
+package(
+ default_compatible_with = ["//buildenv/target:non_prod"],
+ default_visibility = ["//visibility:public"],
+)
+
+# Only supports crashpad-style external zlib.
+# TODO(epastor): Add conditions for embedded & system zlib support.
+
+cc_library(
+ name = "zlib",
+ hdrs = [
+ "zlib_crashpad.h",
+ ],
+ defines = ["CRASHPAD_ZLIB_SOURCE_EXTERNAL"],
+ deps = ["//third_party/zlib:zlibsystem"],
+)
diff --git a/tools/BUILD.bazel b/tools/BUILD.bazel
new file mode 100644
index 0000000..361cfd3
--- /dev/null
+++ b/tools/BUILD.bazel
@@ -0,0 +1,256 @@
+# Copyright 2018 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.
+
+load(
+ "//third_party/crashpad/crashpad/compat:includes.bzl",
+ "CRASHPAD_COMPAT_INCLUDES_COPTS",
+)
+load("//third_party/crashpad:minimum_os.bzl", "MACOS_MINIMUM_OS")
+load("//tools/build_defs/apple:macos.bzl", "macos_command_line_application")
+
+licenses(["notice"])
+
+package(
+ default_visibility = ["//visibility:public"],
+)
+
+config_setting(
+ name = "msvc",
+ values = {
+ "compiler": "msvc",
+ },
+)
+
+cc_library(
+ name = "tool_support",
+ srcs = ["tool_support.cc"],
+ hdrs = ["tool_support.h"],
+ deps = [
+ "//third_party/crashpad:internal",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+cc_binary(
+ name = "crashpad_database_util",
+ srcs = [
+ "crashpad_database_util.cc",
+ ],
+ copts = CRASHPAD_COMPAT_INCLUDES_COPTS,
+ deps = [
+ ":tool_support",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/client",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+cc_binary(
+ name = "crashpad_http_upload",
+ srcs = [
+ "crashpad_http_upload.cc",
+ ],
+ copts = CRASHPAD_COMPAT_INCLUDES_COPTS,
+ features = ["-use_header_modules"],
+ deps = [
+ ":tool_support",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ] + select({
+ "//tools/cc_target_os:platform_macos": [
+ "//third_party/crashpad/crashpad/util:util_mac",
+ ],
+ "//conditions:default": [],
+ }),
+)
+
+cc_binary(
+ name = "base94_encoder",
+ srcs = ["base94_encoder.cc"],
+ deps = [
+ ":tool_support",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ] + select({
+ "//tools/cc_target_os:platform_macos": [
+ "//third_party/crashpad/crashpad/util:util_mac",
+ ],
+ "//conditions:default": [],
+ }),
+)
+
+cc_library(
+ name = "generate_dump_lib",
+ srcs = select({
+ # MSVC fails to link the final cc_binary unless the main function is provided there.
+ ":msvc": [],
+ "//conditions:default": ["generate_dump.cc"],
+ }),
+ copts = CRASHPAD_COMPAT_INCLUDES_COPTS,
+ features = ["-use_header_modules"],
+ deps = [
+ ":tool_support",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/minidump",
+ "//third_party/crashpad/crashpad/snapshot",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ ] + select({
+ "//tools/cc_target_os:platform_macos": [
+ "//third_party/crashpad/crashpad/util:util_mac",
+ "//third_party/mini_chromium:base_mac",
+ ],
+ "//conditions:default": [],
+ }),
+)
+
+macos_command_line_application(
+ name = "generate_dump_mac",
+ bundle_id = "generate_dump",
+ infoplists = [
+ "mac/sectaskaccess_info.plist",
+ ],
+ minimum_os_version = MACOS_MINIMUM_OS,
+ tags = ["maconly"],
+ deps = [
+ ":generate_dump_lib",
+ ],
+)
+
+cc_binary(
+ name = "generate_dump_generic",
+ srcs = select({
+ # MSVC fails to link this cc_binary unless the main function is provided here.
+ ":msvc": ["generate_dump.cc"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":generate_dump_lib",
+ ],
+)
+
+genrule(
+ name = "generate_dump_tool",
+ srcs = select({
+ "//tools/cc_target_os:platform_macos": [":generate_dump_mac"],
+ "//conditions:default": [":generate_dump_generic"],
+ }),
+ outs = ["generate_dump"],
+ cmd = "cp $$(echo $(SRCS) | sed 's+\\s*[^ ]*\\.dSYM[^ ]*\\s*++g') $@",
+ output_to_bindir = True,
+)
+
+objc_library(
+ name = "run_with_crashpad_lib",
+ srcs = [
+ "run_with_crashpad.cc",
+ ],
+ tags = ["maconly"],
+ deps = [
+ ":tool_support",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/client",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/mini_chromium:base",
+ "//third_party/mini_chromium:base_mac",
+ ],
+)
+
+macos_command_line_application(
+ name = "run_with_crashpad",
+ minimum_os_version = MACOS_MINIMUM_OS,
+ tags = ["maconly"],
+ deps = [":run_with_crashpad_lib"],
+)
+
+objc_library(
+ name = "catch_exception_tool_lib",
+ srcs = [
+ "mac/catch_exception_tool.cc",
+ ],
+ tags = ["maconly"],
+ deps = [
+ ":tool_support",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/crashpad/crashpad/util:util_mac",
+ "//third_party/mini_chromium:base",
+ "//third_party/mini_chromium:base_mac",
+ ],
+)
+
+macos_command_line_application(
+ name = "catch_exception_tool",
+ minimum_os_version = MACOS_MINIMUM_OS,
+ tags = ["maconly"],
+ deps = [":catch_exception_tool_lib"],
+)
+
+objc_library(
+ name = "exception_port_tool_lib",
+ srcs = [
+ "mac/exception_port_tool.cc",
+ ],
+ tags = ["maconly"],
+ deps = [
+ ":tool_support",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/crashpad/crashpad/util:util_mac",
+ "//third_party/mini_chromium:base",
+ "//third_party/mini_chromium:base_mac",
+ ],
+)
+
+macos_command_line_application(
+ name = "exception_port_tool",
+ infoplists = ["mac/sectaskaccess_info.plist"],
+ minimum_os_version = MACOS_MINIMUM_OS,
+ tags = ["maconly"],
+ deps = [":exception_port_tool_lib"],
+)
+
+objc_library(
+ name = "on_demand_service_tool_lib",
+ non_arc_srcs = [
+ "mac/on_demand_service_tool.mm",
+ ],
+ tags = ["maconly"],
+ deps = [
+ ":tool_support",
+ "//third_party/apple_frameworks:CoreFoundation",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/util",
+ "//third_party/crashpad/crashpad/util:util_mac",
+ "//third_party/mini_chromium:base",
+ "//third_party/mini_chromium:base_mac",
+ ],
+)
+
+macos_command_line_application(
+ name = "on_demand_service_tool",
+ minimum_os_version = MACOS_MINIMUM_OS,
+ tags = ["maconly"],
+ deps = [":on_demand_service_tool_lib"],
+)
diff --git a/util/BUILD.bazel b/util/BUILD.bazel
new file mode 100644
index 0000000..41acb10
--- /dev/null
+++ b/util/BUILD.bazel
@@ -0,0 +1,944 @@
+# Copyright 2018 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.
+
+load("//tools/build_defs/testing:bzl_library.bzl", "bzl_library")
+load("//third_party/crashpad:copts.bzl", "CRASHPAD_COMMON_COPTS")
+load("//third_party/crashpad:minimum_os.bzl", "MACOS_MINIMUM_OS")
+load("//third_party/crashpad/crashpad/util:mig.bzl", "mig")
+load("//third_party/lexan:masm.bzl", "masm_assemble")
+load("//tools/build_defs/apple:macos.bzl", "macos_unit_test")
+load("//tools/build_defs/apple:ios.bzl", "ios_unit_test")
+
+licenses(["notice"])
+
+package(
+ default_visibility = [
+ "//third_party/crashpad:__subpackages__",
+ "//third_party/crashpad:clients",
+ ],
+)
+
+config_setting(
+ name = "windows_x86",
+ flag_values = {
+ "//tools/cpp:cc_target_os": "windows",
+ },
+ values = {
+ "cpu": "win_x86",
+ },
+)
+
+config_setting(
+ name = "windows_x64",
+ flag_values = {
+ "//tools/cpp:cc_target_os": "windows",
+ },
+ values = {
+ "cpu": "win_x64",
+ },
+)
+
+CRASHPAD_UTIL_SOURCES = [
+ "file/delimited_file_reader.cc",
+ "file/file_helper.cc",
+ "file/file_io.cc",
+ "file/file_reader.cc",
+ "file/file_seeker.cc",
+ "file/file_seeker.h",
+ "file/file_writer.cc",
+ "file/output_stream_file_writer.cc",
+ "file/scoped_remove_file.cc",
+ "file/string_file.cc",
+ "misc/initialization_state_dcheck.cc",
+ "misc/lexing.cc",
+ "misc/lexing.h",
+ "misc/metrics.cc",
+ "misc/pdb_structures.cc",
+ "misc/random_string.cc",
+ "misc/range_set.cc",
+ "misc/reinterpret_bytes.cc",
+ "misc/scoped_forbid_return.cc",
+ "misc/symbolic_constants_common.h",
+ "misc/time.cc",
+ "misc/uuid.cc",
+ "misc/zlib.cc",
+ "net/http_body.cc",
+ "net/http_body_gzip.cc",
+ "net/http_multipart_builder.cc",
+ "net/http_transport.cc",
+ "net/url.cc",
+ "numeric/checked_address_range.cc",
+ "process/process_memory.cc",
+ "process/process_memory_range.cc",
+ "stdlib/aligned_allocator.cc",
+ "stdlib/string_number_conversion.cc",
+ "stdlib/strlcpy.cc",
+ "stdlib/strnlen.cc",
+ "stream/base94_output_stream.cc",
+ "stream/file_encoder.cc",
+ "stream/file_output_stream.cc",
+ "stream/log_output_stream.cc",
+ "stream/zlib_output_stream.cc",
+ "string/split_string.cc",
+ "thread/thread.cc",
+ "thread/thread_log_messages.cc",
+ "thread/worker_thread.cc",
+]
+
+CRASHPAD_UTIL_HEADERS = [
+ "file/delimited_file_reader.h",
+ "file/directory_reader.h",
+ "file/file_helper.h",
+ "file/file_io.h",
+ "file/file_reader.h",
+ "file/file_writer.h",
+ "file/filesystem.h",
+ "file/output_stream_file_writer.h",
+ "file/scoped_remove_file.h",
+ "file/string_file.h",
+ "misc/address_sanitizer.h",
+ "misc/address_types.h",
+ "misc/arm64_pac_bti.S",
+ "misc/arraysize.h",
+ "misc/as_underlying_type.h",
+ "misc/capture_context.h",
+ "misc/clock.h",
+ "misc/elf_note_types.h",
+ "misc/from_pointer_cast.h",
+ "misc/implicit_cast.h",
+ "misc/initialization_state.h",
+ "misc/initialization_state_dcheck.h",
+ "misc/memory_sanitizer.h",
+ "misc/metrics.h",
+ "misc/paths.h",
+ "misc/pdb_structures.h",
+ "misc/random_string.h",
+ "misc/range_set.h",
+ "misc/reinterpret_bytes.h",
+ "misc/scoped_forbid_return.h",
+ "misc/time.h",
+ "misc/tri_state.h",
+ "misc/uuid.h",
+ "misc/zlib.h",
+ "net/http_body.h",
+ "net/http_body_gzip.h",
+ "net/http_headers.h",
+ "net/http_multipart_builder.h",
+ "net/http_transport.h",
+ "net/url.h",
+ "numeric/checked_address_range.h",
+ "numeric/checked_range.h",
+ "numeric/checked_vm_address_range.h",
+ "numeric/in_range_cast.h",
+ "numeric/int128.h",
+ "numeric/safe_assignment.h",
+ "process/process_id.h",
+ "process/process_memory.h",
+ "process/process_memory_native.h",
+ "process/process_memory_range.h",
+ "stdlib/aligned_allocator.h",
+ "stdlib/map_insert.h",
+ "stdlib/string_number_conversion.h",
+ "stdlib/strlcpy.h",
+ "stdlib/strnlen.h",
+ "stdlib/thread_safe_vector.h",
+ "stream/base94_output_stream.h",
+ "stream/file_encoder.h",
+ "stream/file_output_stream.h",
+ "stream/log_output_stream.h",
+ "stream/output_stream_interface.h",
+ "stream/zlib_output_stream.h",
+ "string/split_string.h",
+ "synchronization/semaphore.h",
+ "thread/stoppable.h",
+ "thread/thread.h",
+ "thread/thread_log_messages.h",
+ "thread/worker_thread.h",
+]
+
+CRASHPAD_UTIL_LINUX_SOURCES = [
+ "linux/auxiliary_vector.cc",
+ "linux/checked_linux_address_range.h",
+ "linux/direct_ptrace_connection.cc",
+ "linux/exception_handler_client.cc",
+ "linux/exception_handler_protocol.cc",
+ "linux/memory_map.cc",
+ "linux/proc_stat_reader.cc",
+ "linux/proc_task_reader.cc",
+ "linux/ptrace_broker.cc",
+ "linux/ptrace_client.cc",
+ "linux/ptracer.cc",
+ "linux/scoped_pr_set_dumpable.cc",
+ "linux/scoped_pr_set_ptracer.cc",
+ "linux/scoped_ptrace_attach.cc",
+ "linux/socket.cc",
+ "linux/thread_info.cc",
+ "misc/capture_context_linux.S",
+ "misc/paths_linux.cc",
+ "misc/time_linux.cc",
+ "net/http_transport_socket.cc",
+ "posix/process_info_linux.cc",
+ "process/process_memory_linux.cc",
+ "process/process_memory_sanitized.cc",
+]
+
+CRASHPAD_UTIL_LINUX_HEADERS = [
+ "linux/address_types.h",
+ "linux/auxiliary_vector.h",
+ "linux/direct_ptrace_connection.h",
+ "linux/exception_handler_client.h",
+ "linux/exception_handler_protocol.h",
+ "linux/exception_information.h",
+ "linux/memory_map.h",
+ "linux/proc_stat_reader.h",
+ "linux/proc_task_reader.h",
+ "linux/ptrace_broker.h",
+ "linux/ptrace_client.h",
+ "linux/ptrace_connection.h",
+ "linux/ptracer.h",
+ "linux/scoped_pr_set_dumpable.h",
+ "linux/scoped_pr_set_ptracer.h",
+ "linux/scoped_ptrace_attach.h",
+ "linux/socket.h",
+ "linux/thread_info.h",
+ "linux/traits.h",
+ "process/process_memory_linux.h",
+ "process/process_memory_sanitized.h",
+]
+
+CRASHPAD_UTIL_MACOS_HEADERS = [
+ "process/process_memory_mac.h",
+ "ios/ios_intermediate_dump_format.h",
+ "ios/scoped_background_task.h",
+]
+
+CRASHPAD_UTIL_POSIX_SOURCES = [
+ "file/directory_reader_posix.cc",
+ "file/file_io_posix.cc",
+ "file/filesystem_posix.cc",
+ "misc/clock_posix.cc",
+ "posix/close_multiple.cc",
+ "posix/close_stdio.cc",
+ "posix/drop_privileges.cc",
+ "posix/scoped_dir.cc",
+ "posix/scoped_mmap.cc",
+ "posix/signals.cc",
+ "posix/spawn_subprocess.cc",
+ "posix/symbolic_constants_posix.cc",
+ "synchronization/semaphore_posix.cc",
+ "thread/thread_posix.cc",
+]
+
+CRASHPAD_UTIL_POSIX_HEADERS = [
+ "posix/close_multiple.h",
+ "posix/close_stdio.h",
+ "posix/drop_privileges.h",
+ "posix/process_info.h",
+ "posix/scoped_dir.h",
+ "posix/scoped_mmap.h",
+ "posix/signals.h",
+ "posix/spawn_subprocess.h",
+ "posix/symbolic_constants_posix.h",
+]
+
+CRASHPAD_UTIL_WINDOWS_SOURCES = [
+ "file/directory_reader_win.cc",
+ "file/file_io_win.cc",
+ "file/filesystem_win.cc",
+ "misc/clock_win.cc",
+ "misc/paths_win.cc",
+ "misc/time_win.cc",
+ "net/http_transport_win.cc",
+ "process/process_memory_win.cc",
+ "synchronization/semaphore_win.cc",
+ "thread/thread_win.cc",
+ "win/address_types.h",
+ "win/checked_win_address_range.h",
+ "win/command_line.cc",
+ "win/command_line.h",
+ "win/critical_section_with_debug_info.cc",
+ "win/critical_section_with_debug_info.h",
+ "win/exception_codes.h",
+ "win/get_function.cc",
+ "win/get_function.h",
+ "win/get_module_information.cc",
+ "win/get_module_information.h",
+ "win/handle.cc",
+ "win/handle.h",
+ "win/initial_client_data.cc",
+ "win/initial_client_data.h",
+ "win/loader_lock.cc",
+ "win/module_version.cc",
+ "win/module_version.h",
+ "win/nt_internals.cc",
+ "win/nt_internals.h",
+ "win/ntstatus_logging.cc",
+ "win/ntstatus_logging.h",
+ "win/process_info.cc",
+ "win/process_info.h",
+ "win/process_structs.h",
+ "win/registration_protocol_win.cc",
+ "win/safe_terminate_process.h",
+ "win/scoped_handle.cc",
+ "win/scoped_handle.h",
+ "win/scoped_local_alloc.cc",
+ "win/scoped_local_alloc.h",
+ "win/scoped_process_suspend.cc",
+ "win/scoped_process_suspend.h",
+ "win/scoped_set_event.cc",
+ "win/scoped_set_event.h",
+ "win/session_end_watcher.cc",
+ "win/session_end_watcher.h",
+ "win/termination_codes.h",
+ "win/xp_compat.h",
+]
+
+CRASHPAD_UTIL_WINDOWS_HEADERS = [
+ "process/process_memory_win.h",
+ "win/context_wrappers.h",
+ "win/exception_handler_server.h",
+ "win/loader_lock.h",
+ "win/registration_protocol_win.h",
+ "win/registration_protocol_win_structs.h",
+ "win/scoped_registry_key.h",
+ "win/traits.h",
+]
+
+py_binary(
+ name = "mig_fix",
+ srcs = [
+ "mach/mig_fix.py",
+ ],
+ main = "mach/mig_fix.py",
+ python_version = "PY3",
+)
+
+mig(
+ name = "mig_generated_files",
+ srcs = select({
+ "//tools/cc_target_os:platform_ios": [
+ "//third_party/crashpad/crashpad/external_libraries/xnu:osfmk/mach/exc.defs",
+ "//third_party/crashpad/crashpad/external_libraries/xnu:osfmk/mach/mach_exc.defs",
+ ],
+ "//tools/cc_target_os:platform_macos": [
+ "mach/child_port.defs",
+ ],
+ "//conditions:default": [],
+ }),
+ compatible_with = ["//buildenv/target:non_prod"],
+ include_dirs = select({
+ "//tools/cc_target_os:platform_ios": [
+ "$(location //third_party/crashpad/crashpad/compat:src_location)/mac",
+ "$(location //third_party/crashpad/crashpad/compat:src_location)/ios",
+ "$(location //third_party/crashpad/crashpad/external_libraries/xnu:src_location)/osfmk",
+ ],
+ "//conditions:default": [],
+ }),
+ included_srcs = select({
+ "//tools/cc_target_os:platform_ios": [
+ "//third_party/crashpad/crashpad/external_libraries/xnu:osfmk/mach/mach_types.defs",
+ "//third_party/crashpad/crashpad/external_libraries/xnu:osfmk/mach/machine/machine_types.defs",
+ "//third_party/crashpad/crashpad/external_libraries/xnu:osfmk/mach/std_types.defs",
+ ],
+ "//conditions:default": [],
+ }),
+ output_dir = "mach",
+ sdk_srcs = select({
+ "//tools/cc_target_os:platform_macos": [
+ "usr/include/mach/exc.defs",
+ "usr/include/mach/mach_exc.defs",
+ "usr/include/mach/notify.defs",
+ ],
+ "//conditions:default": [],
+ }),
+ tags = ["maconly"],
+ deps = [
+ "//third_party/crashpad/crashpad/compat:src_location",
+ "//third_party/crashpad/crashpad/external_libraries/xnu:src_location",
+ ],
+)
+
+filegroup(
+ name = "mig_generated_sources",
+ srcs = [":mig_generated_files"],
+ compatible_with = ["//buildenv/target:non_prod"],
+ output_group = "src_files",
+ tags = ["maconly"],
+)
+
+filegroup(
+ name = "mig_generated_headers",
+ srcs = [":mig_generated_files"],
+ compatible_with = ["//buildenv/target:non_prod"],
+ output_group = "hdr_files",
+ tags = ["maconly"],
+)
+
+objc_library(
+ name = "mach_interfaces",
+ srcs = [":mig_generated_sources"],
+ hdrs = [
+ "mach/child_port_types.h",
+ ":mig_generated_headers",
+ ],
+ aspect_hints = [
+ # This target's headers are internal to Crashpad and never imported by Swift.
+ "//tools/build_defs/swift:no_module",
+ ],
+ compatible_with = ["//buildenv/target:non_prod"],
+ tags = ["maconly"],
+ deps = ["//third_party/crashpad:internal"],
+)
+
+# This exists as a separate target from util so that compat may depend on it
+# without cycles.
+cc_library(
+ name = "no_cfi_icall",
+ hdrs = ["misc/no_cfi_icall.h"],
+ compatible_with = ["//buildenv/target:non_prod"],
+ features = ["-use_header_modules"],
+ deps = ["//third_party/mini_chromium:base"],
+)
+
+masm_assemble(
+ name = "windows_asm",
+ srcs = [
+ "misc/capture_context_win.asm",
+ "win/safe_terminate_process.asm",
+ ],
+ asmopts = select({
+ ":windows_x86": ["/safeseh"],
+ "//conditions:default": [],
+ }),
+ tags = ["windowsonly"],
+)
+
+# Used by crashpad_wer_handler to avoid linking all of :util.
+cc_library(
+ name = "util_registration_protocol",
+ hdrs = [
+ "misc/address_types.h",
+ "win/address_types.h",
+ "win/registration_protocol_win_structs.h",
+ ],
+ tags = ["windowsonly"],
+ deps = [
+ "//third_party/crashpad:internal",
+ "//third_party/mini_chromium:base",
+ ],
+)
+
+cc_library(
+ name = "util",
+ srcs = CRASHPAD_UTIL_SOURCES +
+ select({
+ "//tools/cc_target_os:apple": CRASHPAD_UTIL_POSIX_SOURCES,
+ "//tools/cc_target_os:windows": CRASHPAD_UTIL_WINDOWS_SOURCES,
+ "//conditions:default": CRASHPAD_UTIL_LINUX_SOURCES +
+ CRASHPAD_UTIL_POSIX_SOURCES,
+ }),
+ hdrs = CRASHPAD_UTIL_HEADERS +
+ select({
+ "//tools/cc_target_os:apple": CRASHPAD_UTIL_POSIX_HEADERS +
+ CRASHPAD_UTIL_MACOS_HEADERS,
+ "//tools/cc_target_os:windows": CRASHPAD_UTIL_WINDOWS_HEADERS,
+ "//conditions:default": CRASHPAD_UTIL_LINUX_HEADERS +
+ CRASHPAD_UTIL_POSIX_HEADERS,
+ }),
+ compatible_with = ["//buildenv/target:non_prod"],
+ copts = CRASHPAD_COMMON_COPTS + [
+ "-DZLIB_CONST",
+ "-Wno-vla",
+ ],
+ features = ["-use_header_modules"],
+ linkopts = select({
+ "//tools/cc_target_os:android": [],
+ "//tools/cc_target_os:apple": [
+ "-lbsm",
+ ],
+ "//tools/cc_target_os:windows": [
+ "user32.lib",
+ "winhttp.lib",
+
+ # TODO(jperaza): version.lib is needed for Windows 7 compatibility.
+ # mincore.lib may be linked against instead when targeting Windows 8+.
+ "version.lib",
+ ],
+ "//conditions:default": [
+ # There is an intentional reference cycle between thread_posix.cc
+ # and client/pthread_create_linux.cc, which provides an interposer
+ # for pthread_create.
+ "-Wl,--warn-backrefs-exclude=*/pthread_create/pthread_create_linux.*",
+ ],
+ }),
+ deps = [
+ ":no_cfi_icall",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/external_libraries/zlib",
+ "//third_party/mini_chromium:base",
+ ] + select({
+ "//tools/cc_target_os:apple": [
+ "//third_party/mini_chromium:base_mac",
+ ],
+ "//tools/cc_target_os:windows": [
+ ":windows_asm",
+ ],
+ "//conditions:default": [
+ "//third_party/crashpad/crashpad/external_libraries/lss",
+ ],
+ }),
+)
+
+objc_library(
+ name = "util_mac",
+ srcs = [
+ "mac/xattr.cc",
+ "mach/composite_mach_message_server.cc",
+ "mach/exc_client_variants.cc",
+ "mach/exc_server_variants.cc",
+ "mach/exception_behaviors.cc",
+ "mach/exception_ports.cc",
+ "mach/mach_extensions.cc",
+ "mach/mach_message.cc",
+ "mach/mach_message_server.cc",
+ "mach/symbolic_constants_mach.cc",
+ "misc/capture_context_mac.S",
+ "misc/clock_mac.cc",
+ "misc/paths_mac.cc",
+ "synchronization/semaphore_mac.cc",
+ ] + select({
+ "//tools/cc_target_os:platform_macos": [
+ "mac/mac_util.cc",
+ "mac/service_management.cc",
+ "mac/sysctl.cc",
+ "mach/bootstrap.cc",
+ "mach/child_port_handshake.cc",
+ "mach/child_port_server.cc",
+ "mach/exception_types.cc",
+ "mach/notify_server.cc",
+ "mach/scoped_task_suspend.cc",
+ "mach/task_for_pid.cc",
+ "posix/process_info_mac.cc",
+ "process/process_memory_mac.cc",
+ ],
+ "//tools/cc_target_os:platform_ios": [
+ "ios/ios_intermediate_dump_data.cc",
+ "ios/ios_intermediate_dump_interface.cc",
+ "ios/ios_intermediate_dump_list.cc",
+ "ios/ios_intermediate_dump_map.cc",
+ "ios/ios_intermediate_dump_object.cc",
+ "ios/ios_intermediate_dump_reader.cc",
+ "ios/ios_intermediate_dump_writer.cc",
+ "ios/ios_system_data_collector.mm",
+ "ios/raw_logging.cc",
+ "ios/scoped_background_task.mm",
+ "ios/scoped_vm_read.cc",
+ ],
+ "//conditions:default": [],
+ }),
+ hdrs = [
+ "mac/xattr.h",
+ "mach/composite_mach_message_server.h",
+ "mach/exc_client_variants.h",
+ "mach/exc_server_variants.h",
+ "mach/exception_behaviors.h",
+ "mach/exception_ports.h",
+ "mach/mach_extensions.h",
+ "mach/mach_message.h",
+ "mach/mach_message_server.h",
+ "mach/symbolic_constants_mach.h",
+ "stdlib/objc.h",
+ ] + select({
+ "//tools/cc_target_os:platform_macos": [
+ "mac/checked_mach_address_range.h",
+ "mac/launchd.h",
+ "mac/mac_util.h",
+ "mac/service_management.h",
+ "mac/sysctl.h",
+ "mach/bootstrap.h",
+ "mach/child_port_handshake.h",
+ "mach/child_port_server.h",
+ "mach/child_port_types.h",
+ "mach/exception_types.h",
+ "mach/notify_server.h",
+ "mach/scoped_task_suspend.h",
+ "mach/task_for_pid.h",
+ "process/process_memory_mac.h",
+ ],
+ "//tools/cc_target_os:platform_ios": [
+ "mac/mac_util.h",
+ "mach/bootstrap.h",
+ "mach/exception_types.h",
+ "ios/ios_intermediate_dump_data.h",
+ "ios/ios_intermediate_dump_format.h",
+ "ios/ios_intermediate_dump_interface.h",
+ "ios/ios_intermediate_dump_list.h",
+ "ios/ios_intermediate_dump_map.h",
+ "ios/ios_intermediate_dump_object.h",
+ "ios/ios_intermediate_dump_reader.h",
+ "ios/ios_intermediate_dump_writer.h",
+ "ios/ios_system_data_collector.h",
+ "ios/raw_logging.h",
+ "ios/scoped_background_task.h",
+ "ios/scoped_vm_read.h",
+ ],
+ "//conditions:default": [],
+ }),
+ aspect_hints = [
+ # This target's headers contain C++ and cannot be imported from Swift.
+ "//tools/build_defs/swift:no_module",
+ ],
+ compatible_with = ["//buildenv/target:non_prod"],
+ copts = CRASHPAD_COMMON_COPTS + ["-Wno-non-virtual-dtor"],
+ features = ["-layering_check"],
+ non_arc_srcs = select({
+ "//tools/cc_target_os:platform_macos": [
+ "mac/launchd.mm",
+ "net/http_transport_mac.mm",
+ ],
+ "//tools/cc_target_os:platform_ios": [
+ "net/http_transport_mac.mm",
+ ],
+ "//conditions:default": [],
+ }),
+ tags = ["maconly"],
+ deps = [
+ ":mach_interfaces",
+ ":util",
+ "//third_party/apple_frameworks:CoreFoundation",
+ "//third_party/apple_frameworks:Foundation",
+ "//third_party/apple_frameworks:IOKit",
+ "//third_party/crashpad:internal",
+ "//third_party/mini_chromium:base_mac",
+ ],
+)
+
+cc_library(
+ name = "exception_handler_server",
+ srcs = select({
+ "//tools/cc_target_os:windows": [
+ "win/exception_handler_server.cc",
+ ],
+ "//conditions:default": [],
+ }),
+ copts = CRASHPAD_COMMON_COPTS,
+ linkopts = select({
+ "//tools/cc_target_os:windows": [
+ "user32.lib",
+ "winhttp.lib",
+
+ # TODO(jperaza): version.lib is needed for Windows 7 compatibility.
+ # mincore.lib may be linked against instead when targeting Windows 8+.
+ "version.lib",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":util",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/minidump",
+ ],
+)
+
+CRASHPAD_UTIL_TEST_SOURCES = [
+ "file/delimited_file_reader_test.cc",
+ "file/directory_reader_test.cc",
+ "file/file_io_test.cc",
+ "file/file_reader_test.cc",
+ "file/filesystem_test.cc",
+ "file/string_file_test.cc",
+ "misc/arraysize_test.cc",
+ "misc/capture_context_test.cc",
+ "misc/capture_context_test_util.h",
+ "misc/clock_test.cc",
+ "misc/from_pointer_cast_test.cc",
+ "misc/initialization_state_dcheck_test.cc",
+ "misc/initialization_state_test.cc",
+ "misc/no_cfi_icall_test.cc",
+ "misc/paths_test.cc",
+ "misc/random_string_test.cc",
+ "misc/range_set_test.cc",
+ "misc/reinterpret_bytes_test.cc",
+ "misc/scoped_forbid_return_test.cc",
+ "misc/time_test.cc",
+ "misc/uuid_test.cc",
+ "net/http_body_gzip_test.cc",
+ "net/http_body_test.cc",
+ "net/http_body_test_util.cc",
+ "net/http_body_test_util.h",
+ "net/http_multipart_builder_test.cc",
+ "net/http_transport_test.cc",
+ "net/url_test.cc",
+ "numeric/checked_address_range_test.cc",
+ "numeric/checked_range_test.cc",
+ "numeric/in_range_cast_test.cc",
+ "numeric/int128_test.cc",
+ "stdlib/aligned_allocator_test.cc",
+ "stdlib/map_insert_test.cc",
+ "stdlib/string_number_conversion_test.cc",
+ "stdlib/strlcpy_test.cc",
+ "stdlib/strnlen_test.cc",
+ "stdlib/thread_safe_vector_test.cc",
+ "stream/base94_output_stream_test.cc",
+ "stream/file_encoder_test.cc",
+ "stream/log_output_stream_test.cc",
+ "stream/test_output_stream.cc",
+ "stream/test_output_stream.h",
+ "stream/zlib_output_stream_test.cc",
+ "string/split_string_test.cc",
+ "synchronization/semaphore_test.cc",
+ "thread/thread_log_messages_test.cc",
+ "thread/thread_test.cc",
+ "thread/worker_thread_test.cc",
+]
+
+CRASHPAD_UTIL_TEST_POSIX_SOURCES = [
+ "posix/process_info_test.cc",
+ "posix/scoped_mmap_test.cc",
+ "posix/signals_test.cc",
+ "posix/symbolic_constants_posix_test.cc",
+]
+
+CRASHPAD_UTIL_TEST_APPLE_SOURCES = [
+ "mac/xattr_test.cc",
+ "mach/composite_mach_message_server_test.cc",
+ "mach/exc_server_variants_test.cc",
+ "mach/exception_behaviors_test.cc",
+ "mach/mach_extensions_test.cc",
+ "mach/mach_message_test.cc",
+ "mach/symbolic_constants_mach_test.cc",
+ "misc/capture_context_test_util_mac.cc",
+]
+
+CRASHPAD_UTIL_TEST_MACOS_SOURCES = [
+ "mac/launchd_test.mm",
+ "mac/mac_util_test.mm",
+ "mac/service_management_test.mm",
+ "mac/sysctl_test.cc",
+ "mach/bootstrap_test.cc",
+ "mach/child_port_handshake_test.cc",
+ "mach/child_port_server_test.cc",
+ "mach/exc_client_variants_test.cc",
+ "mach/exception_ports_test.cc",
+ "mach/exception_types_test.cc",
+ "mach/mach_message_server_test.cc",
+ "mach/notify_server_test.cc",
+ "mach/scoped_task_suspend_test.cc",
+ "process/process_memory_mac_test.cc",
+]
+
+CRASHPAD_UTIL_TEST_IOS_SOURCES = [
+ "ios/ios_intermediate_dump_reader_test.cc",
+ "ios/ios_intermediate_dump_writer_test.cc",
+ "ios/scoped_vm_read_test.cc",
+]
+
+CRASHPAD_UTIL_TEST_IOS_SOURCE_EXCLUSIONS = [
+ "process/process_memory_range_test.cc",
+ "process/process_memory_test.cc",
+ "net/http_transport_test.cc",
+ "net/http_body_test.cc",
+ "net/http_multipart_builder_test.cc",
+ "misc/paths_test.cc",
+]
+
+CRASHPAD_UTIL_TEST_WINDOWS_SOURCES = [
+ "misc/capture_context_test_util_win.cc",
+ "win/command_line_test.cc",
+ "win/critical_section_with_debug_info_test.cc",
+ "win/exception_handler_server_test.cc",
+ "win/get_function_test.cc",
+ "win/handle_test.cc",
+ "win/initial_client_data_test.cc",
+ "win/loader_lock_test.cc",
+ "win/process_info_test.cc",
+ "win/registration_protocol_win_test.cc",
+ "win/safe_terminate_process_test.cc",
+ "win/scoped_process_suspend_test.cc",
+ "win/session_end_watcher_test.cc",
+]
+
+CRASHPAD_UTIL_TEST_LINUX_SOURCES = [
+ "linux/auxiliary_vector_test.cc",
+ "linux/memory_map_test.cc",
+ "linux/proc_stat_reader_test.cc",
+ "linux/proc_task_reader_test.cc",
+ "linux/ptrace_broker_test.cc",
+ "linux/ptracer_test.cc",
+ "linux/scoped_ptrace_attach_test.cc",
+ "linux/socket_test.cc",
+ "misc/capture_context_test_util_linux.cc",
+ "process/process_memory_sanitized_test.cc",
+]
+
+cc_test(
+ name = "util_test",
+ testonly = True,
+ srcs = CRASHPAD_UTIL_TEST_SOURCES +
+ select({
+ "//tools/cc_target_os:platform_macos": CRASHPAD_UTIL_TEST_POSIX_SOURCES + CRASHPAD_UTIL_TEST_APPLE_SOURCES +
+ CRASHPAD_UTIL_TEST_MACOS_SOURCES,
+ "//tools/cc_target_os:platform_ios": [],
+ "//tools/cc_target_os:windows": CRASHPAD_UTIL_TEST_WINDOWS_SOURCES,
+ "//conditions:default": CRASHPAD_UTIL_TEST_LINUX_SOURCES +
+ CRASHPAD_UTIL_TEST_POSIX_SOURCES,
+ }),
+ copts = CRASHPAD_COMMON_COPTS + [
+ "-Wno-non-virtual-dtor",
+ ],
+ data = [
+ ":http_transport_test_server",
+ "net/testdata/ascii_http_body.txt",
+ "net/testdata/binary_http_body.dat",
+ "net/testdata/crashpad_util_test_cert.pem",
+ "net/testdata/crashpad_util_test_key.pem",
+ ] + select({
+ "//tools/cc_target_os:apple": [],
+ "//tools/cc_target_os:windows": [
+ # ":crashpad_util_test_loader_lock_test",
+ # ":crashpad_util_test_process_info_test_child",
+ # ":crashpad_util_test_safe_terminate_process_test_child",
+ ],
+ "//conditions:default": [],
+ }),
+ # TODO(mark): Add boringssl as an option; define CRASHPAD_USE_BORINGSSL.
+ features = ["-use_header_modules"],
+ linkopts = select({
+ "//tools/cc_target_os:apple": [],
+ "//tools/cc_target_os:windows": [
+ "rpcrt4.lib",
+ "dbghelp.lib",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":no_cfi_icall",
+ ":util",
+ "//testing/base/public:gunit_no_google3",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/client",
+ "//third_party/crashpad/crashpad/compat",
+ "//third_party/crashpad/crashpad/test",
+ "//third_party/crashpad/crashpad/test:googlemock_main",
+ "//third_party/crashpad/crashpad/external_libraries/zlib",
+ "//third_party/mini_chromium:base",
+ ] + select({
+ "//tools/cc_target_os:apple": [
+ ":util_mac",
+ "//third_party/mini_chromium:base_mac",
+ ],
+ "//tools/cc_target_os:windows": [
+ ":exception_handler_server",
+ ],
+ "//conditions:default": [
+ "//third_party/crashpad/crashpad/external_libraries/lss",
+ ],
+ }),
+)
+
+cc_binary(
+ name = "http_transport_test_server",
+ testonly = True,
+ srcs = [
+ "net/http_transport_test_server.cc",
+ ],
+ linkopts = select({
+ "//tools/cc_target_os:apple": [],
+ "//tools/cc_target_os:windows": [
+ "ws2_32.lib",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":util",
+ "//third_party/cpp_httplib",
+ "//third_party/crashpad:internal",
+ "//third_party/crashpad/crashpad/external_libraries/zlib",
+ "//third_party/crashpad/crashpad/tools:tool_support",
+ "//third_party/mini_chromium:base",
+ ],
+ # TODO(mark): Add boringssl as an option; define CRASHPAD_USE_BORINGSSL,
+ # generate a test server key, and conditionally add appropriate deps.
+)
+
+objc_library(
+ name = "util_test_mac_lib",
+ testonly = True,
+ srcs = [
+ "mac/service_management_test.mm",
+ "mac/sysctl_test.cc",
+ ],
+ non_arc_srcs = [
+ "mac/launchd_test.mm",
+ "mac/mac_util_test.mm",
+ ],
+ tags = ["maconly"],
+ deps = [
+ ":util_mac",
+ "//testing/base/public:gunit_no_google3",
+ "//third_party/crashpad:internal",
+ ],
+ alwayslink = True,
+)
+
+macos_unit_test(
+ name = "util_test_mac",
+ testonly = True,
+ minimum_os_version = MACOS_MINIMUM_OS,
+ tags = ["maconly"],
+ deps = [
+ ":util_test_mac_lib",
+ "//third_party/objective_c/google_toolbox_for_mac:GTM_GoogleTestRunner_GTM_USING_XCTEST",
+ ],
+)
+
+objc_library(
+ name = "util_ios_test_lib",
+ testonly = 1,
+ srcs = [t for t in CRASHPAD_UTIL_TEST_SOURCES + CRASHPAD_UTIL_TEST_APPLE_SOURCES +
+ CRASHPAD_UTIL_TEST_IOS_SOURCES if t not in CRASHPAD_UTIL_TEST_IOS_SOURCE_EXCLUSIONS],
+ copts = CRASHPAD_COMMON_COPTS + [
+ "-Wno-non-virtual-dtor",
+ ],
+ features = ["-layering_check"],
+ tags = ["iosonly"],
+ deps = [
+ ":util",
+ "//testing/base/public:gunit_no_google3",
+ "//third_party/apple_frameworks:XCTest",
+ "//third_party/crashpad/crashpad/test",
+ "//third_party/mini_chromium:base",
+ "//third_party/mini_chromium:testing",
+ ],
+ alwayslink = 1,
+)
+
+ios_unit_test(
+ name = "util_ios_test",
+ minimum_os_version = "13.0",
+ runner = "//testing/utp/ios:IOS_LATEST",
+ tags = ["iosonly"],
+ deps = [
+ ":util_ios_test_lib",
+ "//third_party/objective_c/google_toolbox_for_mac:GTM_GoogleTestRunner_GTM_USING_XCTEST",
+ ],
+)
+
+bzl_library(
+ name = "mig_bzl",
+ srcs = ["mig.bzl"],
+ parse_tests = False,
+ visibility = ["//visibility:private"],
+)
diff --git a/util/mig.bzl b/util/mig.bzl
new file mode 100644
index 0000000..d39e792
--- /dev/null
+++ b/util/mig.bzl
@@ -0,0 +1,208 @@
+# Copyright 2018 The Bazel 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.
+
+"""MIG related actions."""
+
+load(
+ "//third_party/bazel_rules/apple_support/lib:apple_support.bzl",
+ "apple_support",
+)
+load(
+ "//third_party/bazel_skylib/lib:dicts.bzl",
+ "dicts",
+)
+load(
+ "//third_party/bazel_skylib/lib:paths.bzl",
+ "paths",
+)
+load("//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain")
+
+_mig_suffixes = {
+ "user": "User.c",
+ "server": "Server.c",
+ "header": ".h",
+ "sheader": "Server.h",
+}
+
+_migfix_order = ["user", "server", "header", "sheader"]
+
+_migfix_fixed_parameters = {
+ "user": "--fixed_user_c",
+ "server": "--fixed_server_c",
+ "header": "--fixed_user_h",
+ "sheader": "--fixed_server_h",
+}
+
+def _mig_generate(ctx, defs_file, defs_path = None):
+ if (defs_file and defs_path) or (defs_file == None and defs_path == None):
+ fail("_mig_generate accepts exactly one of |defs_file| and |defs_path|; " +
+ "%s and %s were provided." % (defs_file, defs_path))
+ if defs_path == None:
+ defs_path = defs_file.path
+ basename = defs_file.basename
+ else:
+ basename = paths.basename(defs_path)
+
+ raw_interface = {}
+ target_interface = {}
+
+ args = ["mig"]
+
+ arch = None
+ cpu = find_cpp_toolchain(ctx).cpu
+ if cpu.endswith("_arm64"):
+ arch = "arm64"
+ elif cpu.endswith("_armv7"):
+ arch = "armv7"
+ elif cpu.endswith("_x86_64"):
+ arch = "x86_64"
+ else:
+ fail("Could not identify CPU architecture: " + cpu)
+ args.extend(["-arch", arch])
+
+ defs_name = paths.split_extension(basename)[0]
+
+ for target, suffix in _mig_suffixes.items():
+ filename = defs_name + suffix
+ raw_interface[target] = ctx.actions.declare_file("raw_" + filename)
+ if ctx.attr.output_dir:
+ filename = paths.join(ctx.attr.output_dir, filename)
+ target_interface[target] = ctx.actions.declare_file(filename)
+
+ args.extend(["-" + target, raw_interface[target].path])
+
+ args.extend(["-isysroot", apple_common.apple_toolchain().sdk_dir()])
+ args.extend(["-I" + ctx.expand_location(include, ctx.attr.deps) for include in ctx.attr.include_dirs])
+ args.extend(["-Ithird_party/crashpad/crashpad"])
+
+ args.append(defs_path)
+
+ if defs_file:
+ inputs = [defs_file]
+ else:
+ inputs = []
+ apple_support.run(
+ ctx,
+ inputs = inputs + ctx.files.included_srcs,
+ outputs = raw_interface.values(),
+ executable = "xcrun",
+ arguments = args,
+ xcode_path_resolve_level = apple_support.xcode_path_resolve_level.args,
+ mnemonic = "GenerateMachInterface",
+ progress_message = "Generating Mach interface: %s" % basename,
+ execution_requirements = {"no-sandbox": "1"},
+ )
+
+ args = [ctx.executable._migfix.path]
+ for target in _migfix_order:
+ args.append(raw_interface[target].path)
+ for target, parameter in _migfix_fixed_parameters.items():
+ args.extend([parameter, target_interface[target].path])
+
+ ctx.actions.run_shell(
+ inputs = raw_interface.values(),
+ outputs = target_interface.values(),
+ progress_message = "Fixing generated interface: %s" % basename,
+ command = " ".join(args),
+ tools = [ctx.executable._migfix],
+ )
+
+ return target_interface
+
+def _mig_impl(ctx):
+ output_files = []
+
+ src_files = []
+ hdr_files = []
+ client_files = []
+ server_files = []
+
+ defs_files = depset(transitive = [src.files for src in ctx.attr.srcs])
+
+ for defs_file in defs_files.to_list():
+ result_files = _mig_generate(ctx, defs_file)
+ output_files.extend(result_files.values())
+ for target, result_file in result_files.items():
+ if target.endswith("header"):
+ hdr_files.append(result_file)
+ else:
+ src_files.append(result_file)
+
+ if target.startswith("s"):
+ server_files.append(result_file)
+ else:
+ client_files.append(result_file)
+
+ for sdk_defs in ctx.attr.sdk_srcs:
+ defs_path = paths.join(
+ apple_common.apple_toolchain().sdk_dir(),
+ sdk_defs,
+ )
+ result_files = _mig_generate(ctx, None, defs_path)
+ output_files.extend(result_files.values())
+ for target, result_file in result_files.items():
+ if target.endswith("header"):
+ hdr_files.append(result_file)
+ else:
+ src_files.append(result_file)
+
+ if target.startswith("s"):
+ server_files.append(result_file)
+ else:
+ client_files.append(result_file)
+
+ return [
+ DefaultInfo(
+ files = depset(output_files),
+ ),
+ OutputGroupInfo(
+ src_files = depset(src_files),
+ hdr_files = depset(hdr_files),
+ client_files = depset(client_files),
+ server_files = depset(server_files),
+ ),
+ ]
+
+mig = rule(
+ attrs = dicts.add(apple_support.action_required_attrs(), {
+ "srcs": attr.label_list(
+ allow_files = True,
+ mandatory = True,
+ ),
+ "included_srcs": attr.label_list(
+ allow_files = True,
+ mandatory = False,
+ ),
+ "include_dirs": attr.string_list(mandatory = False),
+ "output_dir": attr.string(default = ""),
+ "deps": attr.label_list(mandatory = False),
+ "sdk_srcs": attr.string_list(mandatory = False),
+ "_cc_toolchain": attr.label(
+ default = Label(
+ "//tools/cpp:current_cc_toolchain",
+ ),
+ ),
+ "_migfix": attr.label(
+ cfg = "host",
+ executable = True,
+ default = Label("//third_party/crashpad/crashpad/util:mig_fix"),
+ ),
+ }),
+ fragments = ["apple", "cpp"],
+ implementation = _mig_impl,
+ output_to_genfiles = True,
+ toolchains = [
+ "//tools/cpp:toolchain_type",
+ ],
+)