2017-11-17 17:48:22 -08:00
|
|
|
|
# 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.
|
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
import("../build/crashpad_buildconfig.gni")
|
2018-08-13 19:24:49 -04:00
|
|
|
|
import("net/tls.gni")
|
2018-05-29 12:51:41 -07:00
|
|
|
|
|
2018-08-29 09:33:25 -07:00
|
|
|
|
if (crashpad_is_in_chromium) {
|
|
|
|
|
import("//build/config/sanitizers/sanitizers.gni")
|
2020-03-25 16:12:22 -04:00
|
|
|
|
|
|
|
|
|
# Prevent Chromium source assignment filters from being inherited.
|
|
|
|
|
set_sources_assignment_filter([])
|
2018-08-29 09:33:25 -07:00
|
|
|
|
}
|
|
|
|
|
|
ios: Provide a copy of exc.defs and run mig on it to generate exc stubs
The iOS SDK doesn’t include a copy of <mach/exc.defs>. It only provides
<mach/exc.h>, which is just the user-side header. To obtain declarations
and implementations of the server-side stubs, a current copy of
<mach/exc.defs> is added to third_party, and the mig action in util is
updated to use it on iOS.
The three other mig subsystems that Crashpad uses are not brought to
iOS:
- mach_exc is identical to exc except it always uses 64-bit quantities
for addresses in place of exc’s use of quantiies sized for native
pointers. Because all iOS work is limited to a single process, there
is no need to consider cross-process operation with variable bitness,
so mach_exc is unnecessary. We’re also only targeting 64-bit for iOS,
so exc will always suffice. This follows the spirit of other
mach_-prefixed routines on iOS, where Apple forbids mach_vm_read to
user applications but permits vm_read.
- notify is primarily used on macOS in the Crashpad handler process to
receive a no-senders notification, which is used to trigger handler
shutdown when it has no more clients. This is not believed to be
useful to Crashpad on iOS, which is restricted to single-process
operation.
- child_port is a Crashpad-specific subsystem used to pass Mach rights
between processes, but is similarly useless when restricted to
single-process operation as on iOS.
Bug: crashpad:31
Change-Id: Id4cb3cdd529814438d378c20702c82c1e89dd2be
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2154530
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Justin Cohen <justincohen@chromium.org>
2020-04-17 16:43:39 -04:00
|
|
|
|
if (crashpad_is_mac || crashpad_is_ios) {
|
2020-04-21 11:56:57 -04:00
|
|
|
|
if (crashpad_is_in_chromium || crashpad_is_in_fuchsia) {
|
|
|
|
|
import("//build/config/sysroot.gni")
|
|
|
|
|
} else {
|
|
|
|
|
import("//third_party/mini_chromium/mini_chromium/build/sysroot.gni")
|
2017-12-18 14:35:55 -08:00
|
|
|
|
}
|
2017-11-17 17:48:22 -08:00
|
|
|
|
|
|
|
|
|
action_foreach("mig") {
|
|
|
|
|
script = "mach/mig.py"
|
2020-04-21 11:56:57 -04:00
|
|
|
|
inputs = [
|
|
|
|
|
"mach/mig_fix.py",
|
|
|
|
|
"mach/mig_gen.py",
|
|
|
|
|
]
|
2017-11-17 17:48:22 -08:00
|
|
|
|
|
ios: Provide a copy of exc.defs and run mig on it to generate exc stubs
The iOS SDK doesn’t include a copy of <mach/exc.defs>. It only provides
<mach/exc.h>, which is just the user-side header. To obtain declarations
and implementations of the server-side stubs, a current copy of
<mach/exc.defs> is added to third_party, and the mig action in util is
updated to use it on iOS.
The three other mig subsystems that Crashpad uses are not brought to
iOS:
- mach_exc is identical to exc except it always uses 64-bit quantities
for addresses in place of exc’s use of quantiies sized for native
pointers. Because all iOS work is limited to a single process, there
is no need to consider cross-process operation with variable bitness,
so mach_exc is unnecessary. We’re also only targeting 64-bit for iOS,
so exc will always suffice. This follows the spirit of other
mach_-prefixed routines on iOS, where Apple forbids mach_vm_read to
user applications but permits vm_read.
- notify is primarily used on macOS in the Crashpad handler process to
receive a no-senders notification, which is used to trigger handler
shutdown when it has no more clients. This is not believed to be
useful to Crashpad on iOS, which is restricted to single-process
operation.
- child_port is a Crashpad-specific subsystem used to pass Mach rights
between processes, but is similarly useless when restricted to
single-process operation as on iOS.
Bug: crashpad:31
Change-Id: Id4cb3cdd529814438d378c20702c82c1e89dd2be
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2154530
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Justin Cohen <justincohen@chromium.org>
2020-04-17 16:43:39 -04:00
|
|
|
|
if (crashpad_is_mac) {
|
|
|
|
|
sources = [
|
|
|
|
|
"$sysroot/usr/include/mach/exc.defs",
|
|
|
|
|
"$sysroot/usr/include/mach/mach_exc.defs",
|
|
|
|
|
"$sysroot/usr/include/mach/notify.defs",
|
|
|
|
|
"mach/child_port.defs",
|
|
|
|
|
]
|
|
|
|
|
} else if (crashpad_is_ios) {
|
ios: Provide a copy of mach_exc.defs and run mig on it
This updates (and corrects) 8dbbaff2e1a5, which added exc.defs, by
adding mach_exc.defs too.
The difference betwen the exc and mach_exc subsystems is that the |code|
parameter is int[] in exc and int64_t[] in mach_exc. Many exceptions
carry the exception address in code[1], and a 32-bit int results in the
exception address being truncated in exc. No information is lost in
mach_exc, where a 64-bit int64_t is used.
In 8dbbaff2e1a5, I misremembered the type of the |code| parameter as a
type derived from uintptr_t, such as vm_address_t, an integer as wide as
a pointer. I was wrong, and mach_exc is necessary. I also noted that
Apple normally forbids mach_-prefixed interfaces in favor of the
prefix-less ones for the reasons I mentioned, and that, all else being
equal, it was desirable to adhere to the spirit of that convention.
Because neither exc nor mach_exc are available in the SDK, it’s moot
from a technical perspective, as we need to provide our own stubs either
way.
Bug: crashpad:31
Change-Id: Ied1be470e653b2bead1a283cb8b9283d210c328d
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2159286
Reviewed-by: Justin Cohen <justincohen@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2020-04-21 10:56:57 -04:00
|
|
|
|
sources = [
|
2020-04-21 11:56:57 -04:00
|
|
|
|
# The iOS SDK doesn’t have any .defs files. Get them directly from xnu.
|
ios: Provide a copy of mach_exc.defs and run mig on it
This updates (and corrects) 8dbbaff2e1a5, which added exc.defs, by
adding mach_exc.defs too.
The difference betwen the exc and mach_exc subsystems is that the |code|
parameter is int[] in exc and int64_t[] in mach_exc. Many exceptions
carry the exception address in code[1], and a 32-bit int results in the
exception address being truncated in exc. No information is lost in
mach_exc, where a 64-bit int64_t is used.
In 8dbbaff2e1a5, I misremembered the type of the |code| parameter as a
type derived from uintptr_t, such as vm_address_t, an integer as wide as
a pointer. I was wrong, and mach_exc is necessary. I also noted that
Apple normally forbids mach_-prefixed interfaces in favor of the
prefix-less ones for the reasons I mentioned, and that, all else being
equal, it was desirable to adhere to the spirit of that convention.
Because neither exc nor mach_exc are available in the SDK, it’s moot
from a technical perspective, as we need to provide our own stubs either
way.
Bug: crashpad:31
Change-Id: Ied1be470e653b2bead1a283cb8b9283d210c328d
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2159286
Reviewed-by: Justin Cohen <justincohen@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2020-04-21 10:56:57 -04:00
|
|
|
|
"../third_party/xnu/osfmk/mach/exc.defs",
|
|
|
|
|
"../third_party/xnu/osfmk/mach/mach_exc.defs",
|
|
|
|
|
]
|
ios: Provide a copy of exc.defs and run mig on it to generate exc stubs
The iOS SDK doesn’t include a copy of <mach/exc.defs>. It only provides
<mach/exc.h>, which is just the user-side header. To obtain declarations
and implementations of the server-side stubs, a current copy of
<mach/exc.defs> is added to third_party, and the mig action in util is
updated to use it on iOS.
The three other mig subsystems that Crashpad uses are not brought to
iOS:
- mach_exc is identical to exc except it always uses 64-bit quantities
for addresses in place of exc’s use of quantiies sized for native
pointers. Because all iOS work is limited to a single process, there
is no need to consider cross-process operation with variable bitness,
so mach_exc is unnecessary. We’re also only targeting 64-bit for iOS,
so exc will always suffice. This follows the spirit of other
mach_-prefixed routines on iOS, where Apple forbids mach_vm_read to
user applications but permits vm_read.
- notify is primarily used on macOS in the Crashpad handler process to
receive a no-senders notification, which is used to trigger handler
shutdown when it has no more clients. This is not believed to be
useful to Crashpad on iOS, which is restricted to single-process
operation.
- child_port is a Crashpad-specific subsystem used to pass Mach rights
between processes, but is similarly useless when restricted to
single-process operation as on iOS.
Bug: crashpad:31
Change-Id: Id4cb3cdd529814438d378c20702c82c1e89dd2be
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2154530
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Justin Cohen <justincohen@chromium.org>
2020-04-17 16:43:39 -04:00
|
|
|
|
}
|
2017-11-17 17:48:22 -08:00
|
|
|
|
|
|
|
|
|
outputs = [
|
|
|
|
|
"$target_gen_dir/mach/{{source_name_part}}User.c",
|
|
|
|
|
"$target_gen_dir/mach/{{source_name_part}}Server.c",
|
|
|
|
|
"$target_gen_dir/mach/{{source_name_part}}.h",
|
|
|
|
|
"$target_gen_dir/mach/{{source_name_part}}Server.h",
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
args = [ "{{source}}" ]
|
|
|
|
|
args += rebase_path(outputs, root_build_dir)
|
2017-12-18 14:35:55 -08:00
|
|
|
|
if (crashpad_is_in_chromium) {
|
|
|
|
|
if (!use_system_xcode) {
|
2019-06-07 11:37:56 -07:00
|
|
|
|
import("//build/config/clang/clang.gni")
|
|
|
|
|
import("//build/config/mac/mac_sdk.gni")
|
2019-09-05 17:53:01 -07:00
|
|
|
|
clang_path =
|
|
|
|
|
rebase_path("$clang_base_path/bin/", root_build_dir) + "clang"
|
2019-06-07 11:37:56 -07:00
|
|
|
|
mig_path = "$mac_bin_path" + "mig"
|
|
|
|
|
migcom_path = "$mac_bin_path" + "../libexec/migcom"
|
|
|
|
|
|
2017-12-18 14:35:55 -08:00
|
|
|
|
args += [
|
2019-06-07 11:37:56 -07:00
|
|
|
|
"--clang-path",
|
|
|
|
|
clang_path,
|
|
|
|
|
"--mig-path",
|
|
|
|
|
mig_path,
|
|
|
|
|
"--migcom-path",
|
|
|
|
|
migcom_path,
|
2017-12-18 14:35:55 -08:00
|
|
|
|
]
|
|
|
|
|
}
|
2017-11-17 17:48:22 -08:00
|
|
|
|
}
|
2020-04-21 11:56:57 -04:00
|
|
|
|
if (sysroot != "") {
|
2020-04-30 21:35:16 -04:00
|
|
|
|
if (crashpad_is_in_chromium) {
|
|
|
|
|
# Chromium often brings along its own SDK and wants to keep paths
|
|
|
|
|
# relative…
|
|
|
|
|
args += [
|
|
|
|
|
"--sdk",
|
2020-05-06 20:39:19 -04:00
|
|
|
|
rebase_path(sysroot, root_build_dir),
|
2020-04-30 21:35:16 -04:00
|
|
|
|
]
|
|
|
|
|
} else {
|
|
|
|
|
# …but that’s not an option in the standalone Crashpad build, where the
|
|
|
|
|
# SDK is installed on the system and is absolute. (But use rebase_path
|
|
|
|
|
# just to be sure.)
|
|
|
|
|
args += [
|
|
|
|
|
"--sdk",
|
|
|
|
|
rebase_path(sysroot, ""),
|
|
|
|
|
]
|
|
|
|
|
}
|
2017-12-15 18:49:34 -05:00
|
|
|
|
}
|
2017-11-17 17:48:22 -08:00
|
|
|
|
args += [
|
2020-04-22 10:44:15 -04:00
|
|
|
|
"--include",
|
|
|
|
|
rebase_path("..", root_build_dir),
|
2017-11-17 17:48:22 -08:00
|
|
|
|
"--include",
|
|
|
|
|
rebase_path("../compat/mac", root_build_dir),
|
|
|
|
|
]
|
2020-04-21 11:56:57 -04:00
|
|
|
|
if (crashpad_is_ios) {
|
|
|
|
|
args += [
|
|
|
|
|
"--include",
|
2020-04-22 10:44:15 -04:00
|
|
|
|
rebase_path("../compat/ios", root_build_dir),
|
2020-04-21 11:56:57 -04:00
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
if (current_cpu == "x86") {
|
|
|
|
|
args += [
|
|
|
|
|
"--arch",
|
|
|
|
|
"i386",
|
|
|
|
|
]
|
|
|
|
|
} else if (current_cpu == "x64") {
|
|
|
|
|
args += [
|
|
|
|
|
"--arch",
|
|
|
|
|
"x86_64",
|
|
|
|
|
]
|
|
|
|
|
} else if (current_cpu == "arm") {
|
|
|
|
|
args += [
|
|
|
|
|
"--arch",
|
|
|
|
|
"armv7",
|
|
|
|
|
]
|
|
|
|
|
} else if (current_cpu == "arm64") {
|
|
|
|
|
args += [
|
|
|
|
|
"--arch",
|
|
|
|
|
"arm64",
|
|
|
|
|
]
|
|
|
|
|
}
|
2017-11-17 17:48:22 -08:00
|
|
|
|
}
|
2020-03-23 14:59:21 -04:00
|
|
|
|
|
2020-04-22 10:44:15 -04:00
|
|
|
|
static_library("mig_output") {
|
2020-03-23 14:59:21 -04:00
|
|
|
|
deps = [ ":mig" ]
|
|
|
|
|
sources = get_target_outputs(":mig")
|
|
|
|
|
if (crashpad_is_in_chromium) {
|
|
|
|
|
# mig output contains unreachable code, which irks -Wunreachable-code.
|
|
|
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
|
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
|
|
|
}
|
|
|
|
|
public_configs = [ "..:crashpad_config" ]
|
|
|
|
|
}
|
2017-11-17 17:48:22 -08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static_library("util") {
|
|
|
|
|
sources = [
|
|
|
|
|
"file/delimited_file_reader.cc",
|
|
|
|
|
"file/delimited_file_reader.h",
|
|
|
|
|
"file/directory_reader.h",
|
2020-06-24 09:03:47 +02:00
|
|
|
|
"file/file_helper.cc",
|
|
|
|
|
"file/file_helper.h",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
"file/file_io.cc",
|
|
|
|
|
"file/file_io.h",
|
|
|
|
|
"file/file_reader.cc",
|
|
|
|
|
"file/file_reader.h",
|
|
|
|
|
"file/file_seeker.cc",
|
|
|
|
|
"file/file_seeker.h",
|
|
|
|
|
"file/file_writer.cc",
|
|
|
|
|
"file/file_writer.h",
|
|
|
|
|
"file/filesystem.h",
|
2020-01-28 12:02:55 -08:00
|
|
|
|
"file/output_stream_file_writer.cc",
|
|
|
|
|
"file/output_stream_file_writer.h",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
"file/scoped_remove_file.cc",
|
|
|
|
|
"file/scoped_remove_file.h",
|
|
|
|
|
"file/string_file.cc",
|
|
|
|
|
"file/string_file.h",
|
|
|
|
|
"misc/address_sanitizer.h",
|
|
|
|
|
"misc/address_types.h",
|
2019-01-03 13:36:02 -05:00
|
|
|
|
"misc/arraysize.h",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
"misc/as_underlying_type.h",
|
2018-02-08 16:25:22 -08:00
|
|
|
|
"misc/capture_context.h",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
"misc/clock.h",
|
2018-02-15 10:38:36 -08:00
|
|
|
|
"misc/elf_note_types.h",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
"misc/from_pointer_cast.h",
|
|
|
|
|
"misc/implicit_cast.h",
|
|
|
|
|
"misc/initialization_state.h",
|
|
|
|
|
"misc/initialization_state_dcheck.cc",
|
|
|
|
|
"misc/initialization_state_dcheck.h",
|
|
|
|
|
"misc/lexing.cc",
|
|
|
|
|
"misc/lexing.h",
|
2019-06-28 15:20:01 -07:00
|
|
|
|
"misc/memory_sanitizer.h",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
"misc/metrics.cc",
|
|
|
|
|
"misc/metrics.h",
|
|
|
|
|
"misc/paths.h",
|
|
|
|
|
"misc/pdb_structures.cc",
|
|
|
|
|
"misc/pdb_structures.h",
|
|
|
|
|
"misc/random_string.cc",
|
|
|
|
|
"misc/random_string.h",
|
2018-06-11 09:38:24 -07:00
|
|
|
|
"misc/range_set.cc",
|
|
|
|
|
"misc/range_set.h",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
"misc/reinterpret_bytes.cc",
|
|
|
|
|
"misc/reinterpret_bytes.h",
|
|
|
|
|
"misc/scoped_forbid_return.cc",
|
|
|
|
|
"misc/scoped_forbid_return.h",
|
|
|
|
|
"misc/symbolic_constants_common.h",
|
|
|
|
|
"misc/time.cc",
|
|
|
|
|
"misc/time.h",
|
|
|
|
|
"misc/tri_state.h",
|
|
|
|
|
"misc/uuid.cc",
|
|
|
|
|
"misc/uuid.h",
|
|
|
|
|
"misc/zlib.cc",
|
|
|
|
|
"misc/zlib.h",
|
|
|
|
|
"net/http_body.cc",
|
|
|
|
|
"net/http_body.h",
|
|
|
|
|
"net/http_body_gzip.cc",
|
|
|
|
|
"net/http_body_gzip.h",
|
|
|
|
|
"net/http_headers.h",
|
|
|
|
|
"net/http_multipart_builder.cc",
|
|
|
|
|
"net/http_multipart_builder.h",
|
|
|
|
|
"net/http_transport.cc",
|
|
|
|
|
"net/http_transport.h",
|
|
|
|
|
"net/url.cc",
|
|
|
|
|
"net/url.h",
|
|
|
|
|
"numeric/checked_address_range.cc",
|
|
|
|
|
"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",
|
2019-04-24 11:22:35 -04:00
|
|
|
|
"process/process_id.h",
|
2018-12-20 11:12:51 -08:00
|
|
|
|
"process/process_memory.cc",
|
|
|
|
|
"process/process_memory.h",
|
|
|
|
|
"process/process_memory_native.h",
|
|
|
|
|
"process/process_memory_range.cc",
|
|
|
|
|
"process/process_memory_range.h",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
"stdlib/aligned_allocator.cc",
|
|
|
|
|
"stdlib/aligned_allocator.h",
|
|
|
|
|
"stdlib/map_insert.h",
|
|
|
|
|
"stdlib/objc.h",
|
|
|
|
|
"stdlib/string_number_conversion.cc",
|
|
|
|
|
"stdlib/string_number_conversion.h",
|
|
|
|
|
"stdlib/strlcpy.cc",
|
|
|
|
|
"stdlib/strlcpy.h",
|
|
|
|
|
"stdlib/strnlen.cc",
|
|
|
|
|
"stdlib/strnlen.h",
|
|
|
|
|
"stdlib/thread_safe_vector.h",
|
2019-12-06 10:54:44 -08:00
|
|
|
|
"stream/base94_output_stream.cc",
|
|
|
|
|
"stream/base94_output_stream.h",
|
2019-12-18 11:33:39 -08:00
|
|
|
|
"stream/file_encoder.cc",
|
|
|
|
|
"stream/file_encoder.h",
|
|
|
|
|
"stream/file_output_stream.cc",
|
|
|
|
|
"stream/file_output_stream.h",
|
2019-12-12 13:15:05 -08:00
|
|
|
|
"stream/log_output_stream.cc",
|
|
|
|
|
"stream/log_output_stream.h",
|
2019-09-05 17:53:01 -07:00
|
|
|
|
"stream/output_stream_interface.h",
|
|
|
|
|
"stream/zlib_output_stream.cc",
|
|
|
|
|
"stream/zlib_output_stream.h",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
"string/split_string.cc",
|
|
|
|
|
"string/split_string.h",
|
|
|
|
|
"synchronization/semaphore.h",
|
2018-02-20 10:55:17 -08:00
|
|
|
|
"thread/stoppable.h",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
"thread/thread.cc",
|
|
|
|
|
"thread/thread.h",
|
|
|
|
|
"thread/thread_log_messages.cc",
|
|
|
|
|
"thread/thread_log_messages.h",
|
|
|
|
|
"thread/worker_thread.cc",
|
|
|
|
|
"thread/worker_thread.h",
|
|
|
|
|
]
|
|
|
|
|
|
2019-09-05 17:53:01 -07:00
|
|
|
|
defines = [ "ZLIB_CONST" ]
|
|
|
|
|
|
2018-04-04 15:12:50 -07:00
|
|
|
|
if (crashpad_is_posix || crashpad_is_fuchsia) {
|
2017-11-30 09:59:59 -08:00
|
|
|
|
sources += [
|
|
|
|
|
"file/directory_reader_posix.cc",
|
|
|
|
|
"file/file_io_posix.cc",
|
|
|
|
|
"file/filesystem_posix.cc",
|
|
|
|
|
"misc/clock_posix.cc",
|
|
|
|
|
"posix/close_stdio.cc",
|
|
|
|
|
"posix/close_stdio.h",
|
|
|
|
|
"posix/scoped_dir.cc",
|
|
|
|
|
"posix/scoped_dir.h",
|
|
|
|
|
"posix/scoped_mmap.cc",
|
|
|
|
|
"posix/scoped_mmap.h",
|
|
|
|
|
"posix/signals.cc",
|
|
|
|
|
"posix/signals.h",
|
|
|
|
|
"synchronization/semaphore_posix.cc",
|
|
|
|
|
"thread/thread_posix.cc",
|
|
|
|
|
]
|
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
if (!crashpad_is_fuchsia) {
|
2017-11-30 09:59:59 -08:00
|
|
|
|
sources += [
|
|
|
|
|
"posix/close_multiple.cc",
|
|
|
|
|
"posix/close_multiple.h",
|
|
|
|
|
"posix/double_fork_and_exec.cc",
|
|
|
|
|
"posix/double_fork_and_exec.h",
|
|
|
|
|
"posix/drop_privileges.cc",
|
|
|
|
|
"posix/drop_privileges.h",
|
2017-12-05 15:16:08 -08:00
|
|
|
|
"posix/process_info.h",
|
2017-11-30 09:59:59 -08:00
|
|
|
|
|
|
|
|
|
# These map signals to and from strings. While Fuchsia defines some of
|
|
|
|
|
# the common SIGx defines, signals are never raised on Fuchsia, so
|
|
|
|
|
# there's need to include this mapping code.
|
|
|
|
|
"posix/symbolic_constants_posix.cc",
|
|
|
|
|
"posix/symbolic_constants_posix.h",
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2020-04-17 10:37:15 -04:00
|
|
|
|
if (crashpad_is_mac || crashpad_is_ios) {
|
2020-03-25 16:12:22 -04:00
|
|
|
|
sources += [
|
|
|
|
|
"mac/xattr.cc",
|
|
|
|
|
"mac/xattr.h",
|
2020-04-21 11:59:44 -04:00
|
|
|
|
"mach/composite_mach_message_server.cc",
|
|
|
|
|
"mach/composite_mach_message_server.h",
|
|
|
|
|
"mach/exc_client_variants.cc",
|
|
|
|
|
"mach/exc_client_variants.h",
|
|
|
|
|
"mach/exc_server_variants.cc",
|
|
|
|
|
"mach/exc_server_variants.h",
|
ios: Build four more Mach message and exception utilities
This enables the following code in util/mach on iOS:
- exception_behaviors.{cc,h}
- exception_ports.{cc,h}
- mach_message.{cc,h}
- mach_message_server.{cc,h}
Only the ExceptionBehaviors and MachMessage tests are built, because the
other two are tested by multiprocess tests that won’t run on iOS.
The AuditPIDFromMachMessageTrailer function from mach_message.h is
excluded on iOS because it relies on <bsm/libbsm.h>, which is broken on
iOS: it depends on <bsm/audit_record.h>, which is missing from the SDK.
Additionally, the BSM function that Crashpad uses, audit_token_to_au32,
is marked as unavailable on iOS. Crashpad uses it on macOS to
authenticate Mach messages sent by other processes, but this is moot on
iOS.
Bug: crashpad:31
Change-Id: I5ebc4b80543989b9cd0b85b82eb4b3ff98c44e6c
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2155086
Reviewed-by: Justin Cohen <justincohen@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2020-04-17 17:45:18 -04:00
|
|
|
|
"mach/exception_behaviors.cc",
|
|
|
|
|
"mach/exception_behaviors.h",
|
|
|
|
|
"mach/exception_ports.cc",
|
|
|
|
|
"mach/exception_ports.h",
|
2020-04-17 11:29:09 -04:00
|
|
|
|
"mach/mach_extensions.cc",
|
|
|
|
|
"mach/mach_extensions.h",
|
ios: Build four more Mach message and exception utilities
This enables the following code in util/mach on iOS:
- exception_behaviors.{cc,h}
- exception_ports.{cc,h}
- mach_message.{cc,h}
- mach_message_server.{cc,h}
Only the ExceptionBehaviors and MachMessage tests are built, because the
other two are tested by multiprocess tests that won’t run on iOS.
The AuditPIDFromMachMessageTrailer function from mach_message.h is
excluded on iOS because it relies on <bsm/libbsm.h>, which is broken on
iOS: it depends on <bsm/audit_record.h>, which is missing from the SDK.
Additionally, the BSM function that Crashpad uses, audit_token_to_au32,
is marked as unavailable on iOS. Crashpad uses it on macOS to
authenticate Mach messages sent by other processes, but this is moot on
iOS.
Bug: crashpad:31
Change-Id: I5ebc4b80543989b9cd0b85b82eb4b3ff98c44e6c
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2155086
Reviewed-by: Justin Cohen <justincohen@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2020-04-17 17:45:18 -04:00
|
|
|
|
"mach/mach_message.cc",
|
|
|
|
|
"mach/mach_message.h",
|
|
|
|
|
"mach/mach_message_server.cc",
|
|
|
|
|
"mach/mach_message_server.h",
|
2020-04-28 11:52:14 -04:00
|
|
|
|
"mach/symbolic_constants_mach.cc",
|
|
|
|
|
"mach/symbolic_constants_mach.h",
|
2020-04-25 17:16:10 -04:00
|
|
|
|
"misc/capture_context_mac.S",
|
2020-04-17 10:37:15 -04:00
|
|
|
|
"misc/clock_mac.cc",
|
|
|
|
|
"misc/paths_mac.cc",
|
|
|
|
|
"synchronization/semaphore_mac.cc",
|
2020-03-25 16:12:22 -04:00
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
if (crashpad_is_mac) {
|
2017-11-17 17:48:22 -08:00
|
|
|
|
sources += [
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"mac/checked_mach_address_range.h",
|
|
|
|
|
"mac/launchd.h",
|
|
|
|
|
"mac/launchd.mm",
|
|
|
|
|
"mac/mac_util.cc",
|
|
|
|
|
"mac/mac_util.h",
|
|
|
|
|
"mac/service_management.cc",
|
|
|
|
|
"mac/service_management.h",
|
2020-04-17 11:29:09 -04:00
|
|
|
|
"mach/bootstrap.cc",
|
|
|
|
|
"mach/bootstrap.h",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
"mach/child_port_handshake.cc",
|
|
|
|
|
"mach/child_port_handshake.h",
|
|
|
|
|
"mach/child_port_server.cc",
|
|
|
|
|
"mach/child_port_server.h",
|
|
|
|
|
"mach/child_port_types.h",
|
|
|
|
|
"mach/exception_types.cc",
|
|
|
|
|
"mach/exception_types.h",
|
|
|
|
|
"mach/notify_server.cc",
|
|
|
|
|
"mach/notify_server.h",
|
|
|
|
|
"mach/scoped_task_suspend.cc",
|
|
|
|
|
"mach/scoped_task_suspend.h",
|
|
|
|
|
"mach/task_for_pid.cc",
|
|
|
|
|
"mach/task_for_pid.h",
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"net/http_transport_mac.mm",
|
|
|
|
|
"posix/process_info_mac.cc",
|
2018-12-20 13:12:55 -08:00
|
|
|
|
"process/process_memory_mac.cc",
|
|
|
|
|
"process/process_memory_mac.h",
|
2020-04-17 10:37:15 -04:00
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (crashpad_is_ios) {
|
|
|
|
|
sources += [
|
|
|
|
|
"ios/exception_processor.h",
|
|
|
|
|
"ios/exception_processor.mm",
|
|
|
|
|
"ios/ios_system_data_collector.h",
|
|
|
|
|
"ios/ios_system_data_collector.mm",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
2018-05-30 15:08:18 -07:00
|
|
|
|
deps = []
|
|
|
|
|
|
2019-06-18 09:48:52 -07:00
|
|
|
|
if (crashpad_is_linux || crashpad_is_fuchsia || crashpad_is_android) {
|
2018-04-26 17:21:45 -07:00
|
|
|
|
sources += [ "net/http_transport_socket.cc" ]
|
2018-08-13 19:24:49 -04:00
|
|
|
|
if (crashpad_use_boringssl_for_http_transport_socket) {
|
2019-09-10 14:43:56 -07:00
|
|
|
|
defines += [ "CRASHPAD_USE_BORINGSSL" ]
|
2018-05-30 15:08:18 -07:00
|
|
|
|
|
2019-10-18 07:28:43 -07:00
|
|
|
|
if (crashpad_is_in_chromium || crashpad_is_in_fuchsia) {
|
2018-06-11 09:38:24 -07:00
|
|
|
|
deps += [ "//third_party/boringssl" ]
|
2018-05-30 15:08:18 -07:00
|
|
|
|
} else {
|
|
|
|
|
libs = [
|
|
|
|
|
"crypto",
|
|
|
|
|
"ssl",
|
|
|
|
|
]
|
|
|
|
|
}
|
2018-05-29 12:51:41 -07:00
|
|
|
|
}
|
2017-12-21 17:54:12 -05:00
|
|
|
|
}
|
|
|
|
|
|
2020-04-08 09:56:20 -07:00
|
|
|
|
if (crashpad_is_android) {
|
|
|
|
|
sources += [
|
|
|
|
|
"linux/initial_signal_dispositions.cc",
|
|
|
|
|
"linux/initial_signal_dispositions.h",
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-21 17:54:12 -05:00
|
|
|
|
if (crashpad_is_linux || crashpad_is_android) {
|
2017-12-19 14:21:14 -05:00
|
|
|
|
sources += [
|
|
|
|
|
"linux/address_types.h",
|
|
|
|
|
"linux/auxiliary_vector.cc",
|
|
|
|
|
"linux/auxiliary_vector.h",
|
|
|
|
|
"linux/checked_linux_address_range.h",
|
|
|
|
|
"linux/direct_ptrace_connection.cc",
|
|
|
|
|
"linux/direct_ptrace_connection.h",
|
2017-12-19 17:13:13 -05:00
|
|
|
|
"linux/exception_handler_client.cc",
|
|
|
|
|
"linux/exception_handler_client.h",
|
2018-06-12 08:30:36 -07:00
|
|
|
|
"linux/exception_handler_protocol.cc",
|
2017-12-19 17:13:13 -05:00
|
|
|
|
"linux/exception_handler_protocol.h",
|
2017-12-19 14:21:14 -05:00
|
|
|
|
"linux/exception_information.h",
|
|
|
|
|
"linux/memory_map.cc",
|
|
|
|
|
"linux/memory_map.h",
|
|
|
|
|
"linux/proc_stat_reader.cc",
|
|
|
|
|
"linux/proc_stat_reader.h",
|
2019-04-29 14:28:53 -07:00
|
|
|
|
"linux/proc_task_reader.cc",
|
|
|
|
|
"linux/proc_task_reader.h",
|
2017-12-19 14:21:14 -05:00
|
|
|
|
"linux/ptrace_broker.cc",
|
|
|
|
|
"linux/ptrace_broker.h",
|
|
|
|
|
"linux/ptrace_client.cc",
|
|
|
|
|
"linux/ptrace_client.h",
|
|
|
|
|
"linux/ptrace_connection.h",
|
|
|
|
|
"linux/ptracer.cc",
|
|
|
|
|
"linux/ptracer.h",
|
2018-12-18 09:17:52 -08:00
|
|
|
|
"linux/scoped_pr_set_dumpable.cc",
|
|
|
|
|
"linux/scoped_pr_set_dumpable.h",
|
2018-02-20 13:07:16 -08:00
|
|
|
|
"linux/scoped_pr_set_ptracer.cc",
|
|
|
|
|
"linux/scoped_pr_set_ptracer.h",
|
2017-12-19 14:21:14 -05:00
|
|
|
|
"linux/scoped_ptrace_attach.cc",
|
|
|
|
|
"linux/scoped_ptrace_attach.h",
|
2019-05-02 13:55:08 -07:00
|
|
|
|
"linux/socket.cc",
|
|
|
|
|
"linux/socket.h",
|
2017-12-19 14:21:14 -05:00
|
|
|
|
"linux/thread_info.cc",
|
|
|
|
|
"linux/thread_info.h",
|
|
|
|
|
"linux/traits.h",
|
2018-02-08 16:25:22 -08:00
|
|
|
|
"misc/capture_context_linux.S",
|
2017-12-19 14:21:14 -05:00
|
|
|
|
"misc/paths_linux.cc",
|
2019-11-06 10:00:13 -08:00
|
|
|
|
"misc/time_linux.cc",
|
2017-12-19 14:21:14 -05:00
|
|
|
|
"posix/process_info_linux.cc",
|
|
|
|
|
"process/process_memory_linux.cc",
|
|
|
|
|
"process/process_memory_linux.h",
|
2019-08-14 16:13:35 -07:00
|
|
|
|
"process/process_memory_sanitized.cc",
|
|
|
|
|
"process/process_memory_sanitized.h",
|
2018-01-16 14:46:29 -08:00
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
if (crashpad_is_win) {
|
2017-11-28 10:31:13 -08:00
|
|
|
|
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",
|
2018-11-05 13:14:20 -08:00
|
|
|
|
"process/process_memory_win.cc",
|
|
|
|
|
"process/process_memory_win.h",
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"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",
|
2018-12-12 12:58:24 -08:00
|
|
|
|
"win/context_wrappers.h",
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"win/critical_section_with_debug_info.cc",
|
|
|
|
|
"win/critical_section_with_debug_info.h",
|
|
|
|
|
"win/exception_handler_server.cc",
|
|
|
|
|
"win/exception_handler_server.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",
|
2019-12-03 10:20:34 -08:00
|
|
|
|
"win/loader_lock.cc",
|
|
|
|
|
"win/loader_lock.h",
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"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/registration_protocol_win.h",
|
|
|
|
|
"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",
|
2020-06-23 10:03:31 -04:00
|
|
|
|
"win/scoped_registry_key.h",
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"win/scoped_set_event.cc",
|
|
|
|
|
"win/scoped_set_event.h",
|
|
|
|
|
"win/session_end_watcher.cc",
|
|
|
|
|
"win/session_end_watcher.h",
|
|
|
|
|
"win/termination_codes.h",
|
2020-06-23 10:03:31 -04:00
|
|
|
|
"win/traits.h",
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"win/xp_compat.h",
|
|
|
|
|
]
|
|
|
|
|
|
2017-11-17 17:48:22 -08:00
|
|
|
|
# There's no ml.exe yet in cross builds, so provide broken-but-not-asm
|
|
|
|
|
# versions of the functions defined in .asm files.
|
2017-11-20 16:57:43 -05:00
|
|
|
|
#
|
2017-11-17 17:48:22 -08:00
|
|
|
|
# CaptureContext() in capture_context_broken.cc just calls CHECK(false).
|
|
|
|
|
# SafeTerminateProcess() in safe_terminate_process.cc just calls regular
|
|
|
|
|
# TerminateProcess() without the protection against broken third-party
|
|
|
|
|
# patching of TerminateProcess().
|
2017-11-20 16:57:43 -05:00
|
|
|
|
#
|
|
|
|
|
# TODO(thakis): Use the .asm file in cross builds somehow,
|
|
|
|
|
# https://crbug.com/762167.
|
2017-11-17 17:48:22 -08:00
|
|
|
|
if (host_os == "win") {
|
2018-12-12 12:58:24 -08:00
|
|
|
|
if (current_cpu != "arm64") {
|
|
|
|
|
sources += [
|
|
|
|
|
"misc/capture_context_win.asm",
|
|
|
|
|
"win/safe_terminate_process.asm",
|
|
|
|
|
]
|
|
|
|
|
} else {
|
2019-07-17 16:07:23 +02:00
|
|
|
|
# Most Crashpad builds use Microsoft's armasm64.exe macro assembler for
|
|
|
|
|
# .asm source files. When building in Chromium, clang-cl is used as the
|
|
|
|
|
# assembler instead. Since the two assemblers recognize different
|
|
|
|
|
# assembly dialects, the same .asm file can't be used for each. As a
|
|
|
|
|
# workaround, use a prebuilt .obj file when the Microsoft-dialect
|
|
|
|
|
# assembler isn't available.
|
|
|
|
|
if (crashpad_is_in_chromium) {
|
|
|
|
|
sources += [ "misc/capture_context_win_arm64.obj" ]
|
|
|
|
|
} else {
|
|
|
|
|
sources += [ "misc/capture_context_win_arm64.asm" ]
|
|
|
|
|
}
|
2018-12-12 12:58:24 -08:00
|
|
|
|
}
|
2017-11-17 17:48:22 -08:00
|
|
|
|
} else {
|
|
|
|
|
sources += [
|
2018-02-08 16:25:22 -08:00
|
|
|
|
"misc/capture_context_broken.cc",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
"win/safe_terminate_process_broken.cc",
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
if (crashpad_is_fuchsia) {
|
2017-12-06 10:08:11 -08:00
|
|
|
|
sources += [
|
2018-04-10 14:25:06 -07:00
|
|
|
|
"fuchsia/koid_utilities.cc",
|
|
|
|
|
"fuchsia/koid_utilities.h",
|
2018-04-13 09:42:19 -07:00
|
|
|
|
"fuchsia/scoped_task_suspend.cc",
|
|
|
|
|
"fuchsia/scoped_task_suspend.h",
|
2020-06-27 00:42:33 -04:00
|
|
|
|
"fuchsia/traits.h",
|
2018-04-06 15:13:03 -07:00
|
|
|
|
"misc/capture_context_fuchsia.S",
|
2017-12-06 10:08:11 -08:00
|
|
|
|
"misc/paths_fuchsia.cc",
|
2018-01-16 14:46:29 -08:00
|
|
|
|
"process/process_memory_fuchsia.cc",
|
|
|
|
|
"process/process_memory_fuchsia.h",
|
2017-12-06 10:08:11 -08:00
|
|
|
|
]
|
2017-12-05 10:52:44 -08:00
|
|
|
|
}
|
|
|
|
|
|
2017-11-28 10:31:13 -08:00
|
|
|
|
public_configs = [ "..:crashpad_config" ]
|
2017-11-17 17:48:22 -08:00
|
|
|
|
|
2017-11-29 18:04:25 -05:00
|
|
|
|
# Include generated files starting with "util".
|
2018-10-11 15:56:22 -07:00
|
|
|
|
if (crashpad_is_in_fuchsia) {
|
|
|
|
|
include_dirs = [ "$root_gen_dir/third_party/crashpad" ]
|
|
|
|
|
} else {
|
|
|
|
|
include_dirs = [ "$root_gen_dir/third_party/crashpad/crashpad" ]
|
|
|
|
|
}
|
2017-11-17 17:48:22 -08:00
|
|
|
|
|
2020-01-28 12:02:55 -08:00
|
|
|
|
public_deps = [
|
|
|
|
|
"../compat",
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"../third_party/zlib",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
]
|
|
|
|
|
|
2020-01-28 12:02:55 -08:00
|
|
|
|
deps += [ "../third_party/mini_chromium:base" ]
|
|
|
|
|
|
ios: Provide a copy of exc.defs and run mig on it to generate exc stubs
The iOS SDK doesn’t include a copy of <mach/exc.defs>. It only provides
<mach/exc.h>, which is just the user-side header. To obtain declarations
and implementations of the server-side stubs, a current copy of
<mach/exc.defs> is added to third_party, and the mig action in util is
updated to use it on iOS.
The three other mig subsystems that Crashpad uses are not brought to
iOS:
- mach_exc is identical to exc except it always uses 64-bit quantities
for addresses in place of exc’s use of quantiies sized for native
pointers. Because all iOS work is limited to a single process, there
is no need to consider cross-process operation with variable bitness,
so mach_exc is unnecessary. We’re also only targeting 64-bit for iOS,
so exc will always suffice. This follows the spirit of other
mach_-prefixed routines on iOS, where Apple forbids mach_vm_read to
user applications but permits vm_read.
- notify is primarily used on macOS in the Crashpad handler process to
receive a no-senders notification, which is used to trigger handler
shutdown when it has no more clients. This is not believed to be
useful to Crashpad on iOS, which is restricted to single-process
operation.
- child_port is a Crashpad-specific subsystem used to pass Mach rights
between processes, but is similarly useless when restricted to
single-process operation as on iOS.
Bug: crashpad:31
Change-Id: Id4cb3cdd529814438d378c20702c82c1e89dd2be
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2154530
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Justin Cohen <justincohen@chromium.org>
2020-04-17 16:43:39 -04:00
|
|
|
|
if (crashpad_is_mac || crashpad_is_ios) {
|
|
|
|
|
include_dirs += [ "$root_build_dir/gen" ]
|
ios: Build four more Mach message and exception utilities
This enables the following code in util/mach on iOS:
- exception_behaviors.{cc,h}
- exception_ports.{cc,h}
- mach_message.{cc,h}
- mach_message_server.{cc,h}
Only the ExceptionBehaviors and MachMessage tests are built, because the
other two are tested by multiprocess tests that won’t run on iOS.
The AuditPIDFromMachMessageTrailer function from mach_message.h is
excluded on iOS because it relies on <bsm/libbsm.h>, which is broken on
iOS: it depends on <bsm/audit_record.h>, which is missing from the SDK.
Additionally, the BSM function that Crashpad uses, audit_token_to_au32,
is marked as unavailable on iOS. Crashpad uses it on macOS to
authenticate Mach messages sent by other processes, but this is moot on
iOS.
Bug: crashpad:31
Change-Id: I5ebc4b80543989b9cd0b85b82eb4b3ff98c44e6c
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2155086
Reviewed-by: Justin Cohen <justincohen@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2020-04-17 17:45:18 -04:00
|
|
|
|
deps += [ ":mig_output" ]
|
ios: Provide a copy of exc.defs and run mig on it to generate exc stubs
The iOS SDK doesn’t include a copy of <mach/exc.defs>. It only provides
<mach/exc.h>, which is just the user-side header. To obtain declarations
and implementations of the server-side stubs, a current copy of
<mach/exc.defs> is added to third_party, and the mig action in util is
updated to use it on iOS.
The three other mig subsystems that Crashpad uses are not brought to
iOS:
- mach_exc is identical to exc except it always uses 64-bit quantities
for addresses in place of exc’s use of quantiies sized for native
pointers. Because all iOS work is limited to a single process, there
is no need to consider cross-process operation with variable bitness,
so mach_exc is unnecessary. We’re also only targeting 64-bit for iOS,
so exc will always suffice. This follows the spirit of other
mach_-prefixed routines on iOS, where Apple forbids mach_vm_read to
user applications but permits vm_read.
- notify is primarily used on macOS in the Crashpad handler process to
receive a no-senders notification, which is used to trigger handler
shutdown when it has no more clients. This is not believed to be
useful to Crashpad on iOS, which is restricted to single-process
operation.
- child_port is a Crashpad-specific subsystem used to pass Mach rights
between processes, but is similarly useless when restricted to
single-process operation as on iOS.
Bug: crashpad:31
Change-Id: Id4cb3cdd529814438d378c20702c82c1e89dd2be
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2154530
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Justin Cohen <justincohen@chromium.org>
2020-04-17 16:43:39 -04:00
|
|
|
|
}
|
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
if (crashpad_is_mac) {
|
2020-07-01 14:34:38 -04:00
|
|
|
|
libs = [ "bsm" ]
|
|
|
|
|
frameworks = [
|
2017-11-17 17:48:22 -08:00
|
|
|
|
"CoreFoundation.framework",
|
|
|
|
|
"Foundation.framework",
|
|
|
|
|
"IOKit.framework",
|
|
|
|
|
]
|
ios: Build four more Mach message and exception utilities
This enables the following code in util/mach on iOS:
- exception_behaviors.{cc,h}
- exception_ports.{cc,h}
- mach_message.{cc,h}
- mach_message_server.{cc,h}
Only the ExceptionBehaviors and MachMessage tests are built, because the
other two are tested by multiprocess tests that won’t run on iOS.
The AuditPIDFromMachMessageTrailer function from mach_message.h is
excluded on iOS because it relies on <bsm/libbsm.h>, which is broken on
iOS: it depends on <bsm/audit_record.h>, which is missing from the SDK.
Additionally, the BSM function that Crashpad uses, audit_token_to_au32,
is marked as unavailable on iOS. Crashpad uses it on macOS to
authenticate Mach messages sent by other processes, but this is moot on
iOS.
Bug: crashpad:31
Change-Id: I5ebc4b80543989b9cd0b85b82eb4b3ff98c44e6c
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2155086
Reviewed-by: Justin Cohen <justincohen@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2020-04-17 17:45:18 -04:00
|
|
|
|
deps += [ "../third_party/apple_cf:apple_cf" ]
|
2017-11-17 17:48:22 -08:00
|
|
|
|
}
|
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
if (crashpad_is_win) {
|
2018-02-06 10:57:23 -08:00
|
|
|
|
libs = [
|
|
|
|
|
"user32.lib",
|
2018-03-09 13:20:09 -08:00
|
|
|
|
|
|
|
|
|
# TODO(jperaza): version.lib is needed for Windows 7 compatibility.
|
|
|
|
|
# mincore.lib may be linked against instead when targeting Windows 8+.
|
|
|
|
|
"version.lib",
|
|
|
|
|
|
2018-02-06 10:57:23 -08:00
|
|
|
|
"winhttp.lib",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
]
|
|
|
|
|
|
2018-02-27 15:29:38 -08:00
|
|
|
|
cflags = [ "/wd4201" ] # nonstandard extension used: nameless struct/union.
|
|
|
|
|
|
2017-11-17 17:48:22 -08:00
|
|
|
|
if (current_cpu == "x86") {
|
|
|
|
|
asmflags = [ "/safeseh" ]
|
|
|
|
|
}
|
|
|
|
|
}
|
2018-07-30 15:50:17 -07:00
|
|
|
|
|
|
|
|
|
if (crashpad_is_fuchsia) {
|
2019-04-05 15:45:15 -07:00
|
|
|
|
public_deps += [ "../third_party/fuchsia" ]
|
2018-07-30 15:50:17 -07:00
|
|
|
|
}
|
2019-05-02 13:55:08 -07:00
|
|
|
|
|
|
|
|
|
if (crashpad_is_android || crashpad_is_linux) {
|
|
|
|
|
deps += [ "../third_party/lss" ]
|
|
|
|
|
}
|
2020-02-21 20:40:08 -08:00
|
|
|
|
|
|
|
|
|
configs += [ "..:disable_ubsan" ]
|
2017-11-17 17:48:22 -08:00
|
|
|
|
}
|
|
|
|
|
|
2020-04-15 17:46:45 -04:00
|
|
|
|
if (!crashpad_is_android && !crashpad_is_ios) {
|
2018-05-10 22:58:14 -07:00
|
|
|
|
crashpad_executable("http_transport_test_server") {
|
|
|
|
|
testonly = true
|
2020-01-23 08:00:33 -05:00
|
|
|
|
sources = [ "net/http_transport_test_server.cc" ]
|
2018-04-18 12:49:04 -07:00
|
|
|
|
|
2018-05-10 22:58:14 -07:00
|
|
|
|
deps = [
|
|
|
|
|
":util",
|
|
|
|
|
"../third_party/cpp-httplib",
|
|
|
|
|
"../third_party/mini_chromium:base",
|
|
|
|
|
"../third_party/zlib",
|
|
|
|
|
"../tools:tool_support",
|
2018-04-24 13:02:29 -07:00
|
|
|
|
]
|
2018-04-18 12:49:04 -07:00
|
|
|
|
|
2018-05-10 22:58:14 -07:00
|
|
|
|
if (crashpad_is_standalone) {
|
2018-05-29 12:51:41 -07:00
|
|
|
|
remove_configs = [ "//third_party/mini_chromium/mini_chromium/build:Wexit_time_destructors" ]
|
2018-05-10 22:58:14 -07:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (crashpad_is_win) {
|
|
|
|
|
libs = [ "ws2_32.lib" ]
|
|
|
|
|
}
|
2018-05-29 12:51:41 -07:00
|
|
|
|
|
2018-08-13 19:24:49 -04:00
|
|
|
|
if (crashpad_use_boringssl_for_http_transport_socket) {
|
2018-05-29 12:51:41 -07:00
|
|
|
|
defines = [ "CRASHPAD_USE_BORINGSSL" ]
|
2018-05-30 15:08:18 -07:00
|
|
|
|
|
2019-10-18 07:28:43 -07:00
|
|
|
|
if (crashpad_is_in_chromium || crashpad_is_in_fuchsia) {
|
2018-06-11 09:38:24 -07:00
|
|
|
|
deps += [ "//third_party/boringssl" ]
|
2018-05-30 15:08:18 -07:00
|
|
|
|
} else {
|
|
|
|
|
libs = [
|
|
|
|
|
"crypto",
|
|
|
|
|
"ssl",
|
|
|
|
|
]
|
|
|
|
|
}
|
2018-05-29 12:51:41 -07:00
|
|
|
|
}
|
2018-04-18 12:49:04 -07:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-11-17 17:48:22 -08:00
|
|
|
|
source_set("util_test") {
|
|
|
|
|
testonly = true
|
|
|
|
|
|
|
|
|
|
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",
|
2019-01-03 13:36:02 -05:00
|
|
|
|
"misc/arraysize_test.cc",
|
2018-04-06 15:13:03 -07:00
|
|
|
|
"misc/capture_context_test.cc",
|
2018-02-08 16:25:22 -08:00
|
|
|
|
"misc/capture_context_test_util.h",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
"misc/clock_test.cc",
|
|
|
|
|
"misc/from_pointer_cast_test.cc",
|
|
|
|
|
"misc/initialization_state_dcheck_test.cc",
|
|
|
|
|
"misc/initialization_state_test.cc",
|
|
|
|
|
"misc/paths_test.cc",
|
|
|
|
|
"misc/random_string_test.cc",
|
2018-06-11 09:38:24 -07:00
|
|
|
|
"misc/range_set_test.cc",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
"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/url_test.cc",
|
|
|
|
|
"numeric/checked_address_range_test.cc",
|
|
|
|
|
"numeric/checked_range_test.cc",
|
|
|
|
|
"numeric/in_range_cast_test.cc",
|
|
|
|
|
"numeric/int128_test.cc",
|
2018-12-20 11:12:51 -08:00
|
|
|
|
"process/process_memory_range_test.cc",
|
|
|
|
|
"process/process_memory_test.cc",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
"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",
|
2019-12-06 10:54:44 -08:00
|
|
|
|
"stream/base94_output_stream_test.cc",
|
2019-12-18 11:33:39 -08:00
|
|
|
|
"stream/file_encoder_test.cc",
|
2019-12-12 13:15:05 -08:00
|
|
|
|
"stream/log_output_stream_test.cc",
|
2019-09-05 17:53:01 -07:00
|
|
|
|
"stream/test_output_stream.cc",
|
|
|
|
|
"stream/test_output_stream.h",
|
|
|
|
|
"stream/zlib_output_stream_test.cc",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
"string/split_string_test.cc",
|
|
|
|
|
"synchronization/semaphore_test.cc",
|
|
|
|
|
"thread/thread_log_messages_test.cc",
|
|
|
|
|
"thread/thread_test.cc",
|
|
|
|
|
"thread/worker_thread_test.cc",
|
|
|
|
|
]
|
|
|
|
|
|
2020-04-15 17:46:45 -04:00
|
|
|
|
if (!crashpad_is_android && !crashpad_is_ios) {
|
2018-04-26 17:21:45 -07:00
|
|
|
|
# Android requires an HTTPTransport implementation.
|
2017-12-05 15:16:08 -08:00
|
|
|
|
sources += [ "net/http_transport_test.cc" ]
|
|
|
|
|
}
|
|
|
|
|
|
2018-04-04 15:12:50 -07:00
|
|
|
|
if (crashpad_is_posix || crashpad_is_fuchsia) {
|
2020-04-15 17:46:45 -04:00
|
|
|
|
if (!crashpad_is_fuchsia && !crashpad_is_ios) {
|
2017-12-05 15:16:08 -08:00
|
|
|
|
sources += [
|
|
|
|
|
"posix/process_info_test.cc",
|
|
|
|
|
"posix/signals_test.cc",
|
|
|
|
|
"posix/symbolic_constants_posix_test.cc",
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
sources += [ "posix/scoped_mmap_test.cc" ]
|
|
|
|
|
}
|
|
|
|
|
|
2020-04-17 10:37:15 -04:00
|
|
|
|
if (crashpad_is_mac || crashpad_is_ios) {
|
2020-04-17 11:29:09 -04:00
|
|
|
|
sources += [
|
|
|
|
|
"mac/xattr_test.cc",
|
2020-04-21 11:59:44 -04:00
|
|
|
|
"mach/composite_mach_message_server_test.cc",
|
|
|
|
|
"mach/exc_server_variants_test.cc",
|
ios: Build four more Mach message and exception utilities
This enables the following code in util/mach on iOS:
- exception_behaviors.{cc,h}
- exception_ports.{cc,h}
- mach_message.{cc,h}
- mach_message_server.{cc,h}
Only the ExceptionBehaviors and MachMessage tests are built, because the
other two are tested by multiprocess tests that won’t run on iOS.
The AuditPIDFromMachMessageTrailer function from mach_message.h is
excluded on iOS because it relies on <bsm/libbsm.h>, which is broken on
iOS: it depends on <bsm/audit_record.h>, which is missing from the SDK.
Additionally, the BSM function that Crashpad uses, audit_token_to_au32,
is marked as unavailable on iOS. Crashpad uses it on macOS to
authenticate Mach messages sent by other processes, but this is moot on
iOS.
Bug: crashpad:31
Change-Id: I5ebc4b80543989b9cd0b85b82eb4b3ff98c44e6c
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2155086
Reviewed-by: Justin Cohen <justincohen@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2020-04-17 17:45:18 -04:00
|
|
|
|
"mach/exception_behaviors_test.cc",
|
2020-04-17 11:29:09 -04:00
|
|
|
|
"mach/mach_extensions_test.cc",
|
ios: Build four more Mach message and exception utilities
This enables the following code in util/mach on iOS:
- exception_behaviors.{cc,h}
- exception_ports.{cc,h}
- mach_message.{cc,h}
- mach_message_server.{cc,h}
Only the ExceptionBehaviors and MachMessage tests are built, because the
other two are tested by multiprocess tests that won’t run on iOS.
The AuditPIDFromMachMessageTrailer function from mach_message.h is
excluded on iOS because it relies on <bsm/libbsm.h>, which is broken on
iOS: it depends on <bsm/audit_record.h>, which is missing from the SDK.
Additionally, the BSM function that Crashpad uses, audit_token_to_au32,
is marked as unavailable on iOS. Crashpad uses it on macOS to
authenticate Mach messages sent by other processes, but this is moot on
iOS.
Bug: crashpad:31
Change-Id: I5ebc4b80543989b9cd0b85b82eb4b3ff98c44e6c
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2155086
Reviewed-by: Justin Cohen <justincohen@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2020-04-17 17:45:18 -04:00
|
|
|
|
"mach/mach_message_test.cc",
|
2020-04-28 11:52:14 -04:00
|
|
|
|
"mach/symbolic_constants_mach_test.cc",
|
2020-05-03 15:06:51 -04:00
|
|
|
|
"misc/capture_context_test_util_mac.cc",
|
2020-04-17 11:29:09 -04:00
|
|
|
|
]
|
2020-04-17 10:37:15 -04:00
|
|
|
|
}
|
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
if (crashpad_is_mac) {
|
2017-11-17 17:48:22 -08:00
|
|
|
|
sources += [
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"mac/launchd_test.mm",
|
|
|
|
|
"mac/mac_util_test.mm",
|
|
|
|
|
"mac/service_management_test.mm",
|
2020-04-17 11:29:09 -04:00
|
|
|
|
"mach/bootstrap_test.cc",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
"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",
|
2018-12-20 13:12:55 -08:00
|
|
|
|
"process/process_memory_mac_test.cc",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
2020-04-15 17:46:45 -04:00
|
|
|
|
if (crashpad_is_ios) {
|
|
|
|
|
sources += [ "ios/exception_processor_test.mm" ]
|
|
|
|
|
|
|
|
|
|
sources -= [
|
|
|
|
|
"process/process_memory_range_test.cc",
|
|
|
|
|
"process/process_memory_test.cc",
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-21 17:54:12 -05:00
|
|
|
|
if (crashpad_is_linux || crashpad_is_android) {
|
2017-12-19 14:21:14 -05:00
|
|
|
|
sources += [
|
|
|
|
|
"linux/auxiliary_vector_test.cc",
|
|
|
|
|
"linux/memory_map_test.cc",
|
|
|
|
|
"linux/proc_stat_reader_test.cc",
|
2019-04-29 14:28:53 -07:00
|
|
|
|
"linux/proc_task_reader_test.cc",
|
2017-12-19 14:21:14 -05:00
|
|
|
|
"linux/ptrace_broker_test.cc",
|
|
|
|
|
"linux/ptracer_test.cc",
|
|
|
|
|
"linux/scoped_ptrace_attach_test.cc",
|
2019-05-02 13:55:08 -07:00
|
|
|
|
"linux/socket_test.cc",
|
2018-02-08 16:25:22 -08:00
|
|
|
|
"misc/capture_context_test_util_linux.cc",
|
2019-08-14 16:13:35 -07:00
|
|
|
|
"process/process_memory_sanitized_test.cc",
|
2018-01-16 14:46:29 -08:00
|
|
|
|
]
|
|
|
|
|
}
|
2017-12-19 14:21:14 -05:00
|
|
|
|
|
2018-04-06 15:13:03 -07:00
|
|
|
|
if (crashpad_is_fuchsia) {
|
|
|
|
|
sources += [ "misc/capture_context_test_util_fuchsia.cc" ]
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
if (crashpad_is_win) {
|
2017-11-28 10:31:13 -08:00
|
|
|
|
sources += [
|
2018-02-08 16:25:22 -08:00
|
|
|
|
"misc/capture_context_test_util_win.cc",
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"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",
|
2019-12-03 10:20:34 -08:00
|
|
|
|
"win/loader_lock_test.cc",
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"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",
|
|
|
|
|
]
|
2018-08-29 09:33:25 -07:00
|
|
|
|
|
2018-09-26 17:54:38 +02:00
|
|
|
|
if (crashpad_is_in_chromium && is_asan && is_component_build) {
|
2018-08-29 09:33:25 -07:00
|
|
|
|
# TODO(crbug.com/856174): Re-enable these once Windows ASan is fixed.
|
|
|
|
|
sources -= [ "stdlib/string_number_conversion_test.cc" ]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2020-04-17 10:37:15 -04:00
|
|
|
|
data = [
|
|
|
|
|
"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",
|
|
|
|
|
]
|
2017-11-17 17:48:22 -08:00
|
|
|
|
|
|
|
|
|
deps = [
|
|
|
|
|
":util",
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"../client",
|
|
|
|
|
"../compat",
|
|
|
|
|
"../test",
|
2020-05-06 20:39:19 -04:00
|
|
|
|
"../third_party/googletest:googlemock",
|
|
|
|
|
"../third_party/googletest:googletest",
|
2017-12-18 14:35:55 -08:00
|
|
|
|
"../third_party/mini_chromium:base",
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"../third_party/zlib",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
]
|
|
|
|
|
|
2020-04-15 17:46:45 -04:00
|
|
|
|
if (!crashpad_is_android && !crashpad_is_ios) {
|
2020-01-23 08:00:33 -05:00
|
|
|
|
data_deps = [ ":http_transport_test_server" ]
|
2018-05-29 12:51:41 -07:00
|
|
|
|
|
2018-08-13 19:24:49 -04:00
|
|
|
|
if (crashpad_use_boringssl_for_http_transport_socket) {
|
2018-05-29 12:51:41 -07:00
|
|
|
|
defines = [ "CRASHPAD_USE_BORINGSSL" ]
|
|
|
|
|
}
|
2018-05-10 22:58:14 -07:00
|
|
|
|
}
|
2018-04-18 12:49:04 -07:00
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
if (crashpad_is_mac) {
|
2020-07-01 14:34:38 -04:00
|
|
|
|
frameworks = [ "Foundation.framework" ]
|
2017-11-17 17:48:22 -08:00
|
|
|
|
}
|
|
|
|
|
|
2020-04-17 10:37:15 -04:00
|
|
|
|
if (crashpad_is_ios) {
|
|
|
|
|
deps += [ ":util_test_bundle_data" ]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (crashpad_is_android || crashpad_is_linux) {
|
|
|
|
|
deps += [ "../third_party/lss" ]
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
if (crashpad_is_win) {
|
2018-02-06 10:57:23 -08:00
|
|
|
|
libs = [
|
|
|
|
|
"rpcrt4.lib",
|
|
|
|
|
"dbghelp.lib",
|
|
|
|
|
]
|
2018-04-18 12:49:04 -07:00
|
|
|
|
data_deps += [
|
2019-12-03 10:20:34 -08:00
|
|
|
|
":crashpad_util_test_loader_lock_test",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
":crashpad_util_test_process_info_test_child",
|
|
|
|
|
":crashpad_util_test_safe_terminate_process_test_child",
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2020-04-17 10:37:15 -04:00
|
|
|
|
if (crashpad_is_ios) {
|
|
|
|
|
bundle_data("util_test_bundle_data") {
|
|
|
|
|
testonly = true
|
|
|
|
|
|
|
|
|
|
sources = [
|
|
|
|
|
"net/testdata/ascii_http_body.txt",
|
|
|
|
|
"net/testdata/binary_http_body.dat",
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
outputs = [ "{{bundle_resources_dir}}/crashpad_test_data/" +
|
|
|
|
|
"{{source_root_relative_dir}}/{{source_file_part}}" ]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
if (crashpad_is_win) {
|
2018-03-21 19:18:07 -07:00
|
|
|
|
crashpad_executable("crashpad_util_test_process_info_test_child") {
|
2017-11-17 17:48:22 -08:00
|
|
|
|
testonly = true
|
2020-01-23 08:00:33 -05:00
|
|
|
|
sources = [ "win/process_info_test_child.cc" ]
|
2017-11-17 17:48:22 -08:00
|
|
|
|
}
|
|
|
|
|
|
2018-03-21 19:18:07 -07:00
|
|
|
|
crashpad_executable("crashpad_util_test_safe_terminate_process_test_child") {
|
2017-11-17 17:48:22 -08:00
|
|
|
|
testonly = true
|
2020-01-23 08:00:33 -05:00
|
|
|
|
sources = [ "win/safe_terminate_process_test_child.cc" ]
|
2017-11-17 17:48:22 -08:00
|
|
|
|
}
|
2019-12-03 10:20:34 -08:00
|
|
|
|
|
|
|
|
|
crashpad_loadable_module("crashpad_util_test_loader_lock_test") {
|
|
|
|
|
testonly = true
|
2020-01-23 08:00:33 -05:00
|
|
|
|
sources = [ "win/loader_lock_test_dll.cc" ]
|
|
|
|
|
deps = [ ":util" ]
|
2019-12-03 10:20:34 -08:00
|
|
|
|
}
|
2017-11-17 17:48:22 -08:00
|
|
|
|
}
|