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")
|
2017-11-17 17:48:22 -08:00
|
|
|
|
|
2017-12-19 17:15:10 -08:00
|
|
|
|
if (crashpad_is_in_chromium) {
|
|
|
|
|
import("//build/config/compiler/compiler.gni")
|
|
|
|
|
}
|
|
|
|
|
|
2017-11-17 17:48:22 -08:00
|
|
|
|
static_library("snapshot") {
|
|
|
|
|
sources = [
|
|
|
|
|
"annotation_snapshot.cc",
|
|
|
|
|
"annotation_snapshot.h",
|
|
|
|
|
"capture_memory.cc",
|
|
|
|
|
"capture_memory.h",
|
|
|
|
|
"cpu_architecture.h",
|
|
|
|
|
"cpu_context.cc",
|
|
|
|
|
"cpu_context.h",
|
|
|
|
|
"crashpad_info_client_options.cc",
|
|
|
|
|
"crashpad_info_client_options.h",
|
|
|
|
|
"exception_snapshot.h",
|
|
|
|
|
"handle_snapshot.cc",
|
|
|
|
|
"handle_snapshot.h",
|
2018-02-01 15:54:56 -08:00
|
|
|
|
"memory_snapshot.cc",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
"memory_snapshot.h",
|
|
|
|
|
"minidump/minidump_annotation_reader.cc",
|
|
|
|
|
"minidump/minidump_annotation_reader.h",
|
|
|
|
|
"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/process_snapshot_minidump.h",
|
|
|
|
|
"module_snapshot.h",
|
|
|
|
|
"process_snapshot.h",
|
|
|
|
|
"snapshot_constants.h",
|
|
|
|
|
"system_snapshot.h",
|
|
|
|
|
"thread_snapshot.h",
|
|
|
|
|
"unloaded_module_snapshot.cc",
|
|
|
|
|
"unloaded_module_snapshot.h",
|
|
|
|
|
]
|
|
|
|
|
|
2018-02-06 10:57:23 -08:00
|
|
|
|
if (crashpad_is_posix) {
|
|
|
|
|
sources += [
|
|
|
|
|
"posix/timezone.cc",
|
|
|
|
|
"posix/timezone.h",
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
if (crashpad_is_mac) {
|
2017-11-29 11:59:18 -08:00
|
|
|
|
sources += [
|
|
|
|
|
"mac/cpu_context_mac.cc",
|
|
|
|
|
"mac/cpu_context_mac.h",
|
|
|
|
|
"mac/exception_snapshot_mac.cc",
|
|
|
|
|
"mac/exception_snapshot_mac.h",
|
|
|
|
|
"mac/mach_o_image_annotations_reader.cc",
|
|
|
|
|
"mac/mach_o_image_annotations_reader.h",
|
|
|
|
|
"mac/mach_o_image_reader.cc",
|
|
|
|
|
"mac/mach_o_image_reader.h",
|
|
|
|
|
"mac/mach_o_image_segment_reader.cc",
|
|
|
|
|
"mac/mach_o_image_segment_reader.h",
|
|
|
|
|
"mac/mach_o_image_symbol_table_reader.cc",
|
|
|
|
|
"mac/mach_o_image_symbol_table_reader.h",
|
|
|
|
|
"mac/memory_snapshot_mac.cc",
|
|
|
|
|
"mac/memory_snapshot_mac.h",
|
|
|
|
|
"mac/module_snapshot_mac.cc",
|
|
|
|
|
"mac/module_snapshot_mac.h",
|
|
|
|
|
"mac/process_reader.cc",
|
|
|
|
|
"mac/process_reader.h",
|
|
|
|
|
"mac/process_snapshot_mac.cc",
|
|
|
|
|
"mac/process_snapshot_mac.h",
|
|
|
|
|
"mac/process_types.cc",
|
|
|
|
|
"mac/process_types.h",
|
|
|
|
|
"mac/process_types/all.proctype",
|
|
|
|
|
"mac/process_types/annotation.proctype",
|
|
|
|
|
"mac/process_types/crashpad_info.proctype",
|
|
|
|
|
"mac/process_types/crashreporterclient.proctype",
|
|
|
|
|
"mac/process_types/custom.cc",
|
|
|
|
|
"mac/process_types/dyld_images.proctype",
|
|
|
|
|
"mac/process_types/flavors.h",
|
|
|
|
|
"mac/process_types/internal.h",
|
|
|
|
|
"mac/process_types/loader.proctype",
|
|
|
|
|
"mac/process_types/nlist.proctype",
|
|
|
|
|
"mac/process_types/traits.h",
|
|
|
|
|
"mac/system_snapshot_mac.cc",
|
|
|
|
|
"mac/system_snapshot_mac.h",
|
|
|
|
|
"mac/thread_snapshot_mac.cc",
|
|
|
|
|
"mac/thread_snapshot_mac.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 += [
|
2018-01-09 10:22:24 -08:00
|
|
|
|
"crashpad_types/image_annotation_reader.cc",
|
|
|
|
|
"crashpad_types/image_annotation_reader.h",
|
2017-12-19 14:21:14 -05:00
|
|
|
|
"linux/cpu_context_linux.cc",
|
|
|
|
|
"linux/cpu_context_linux.h",
|
|
|
|
|
"linux/debug_rendezvous.cc",
|
|
|
|
|
"linux/debug_rendezvous.h",
|
|
|
|
|
"linux/exception_snapshot_linux.cc",
|
|
|
|
|
"linux/exception_snapshot_linux.h",
|
|
|
|
|
"linux/memory_snapshot_linux.cc",
|
|
|
|
|
"linux/memory_snapshot_linux.h",
|
2018-01-10 11:23:56 -08:00
|
|
|
|
"linux/module_snapshot_linux.cc",
|
|
|
|
|
"linux/module_snapshot_linux.h",
|
2017-12-19 14:21:14 -05:00
|
|
|
|
"linux/process_reader.cc",
|
|
|
|
|
"linux/process_reader.h",
|
|
|
|
|
"linux/process_snapshot_linux.cc",
|
|
|
|
|
"linux/process_snapshot_linux.h",
|
|
|
|
|
"linux/signal_context.h",
|
|
|
|
|
"linux/system_snapshot_linux.cc",
|
|
|
|
|
"linux/system_snapshot_linux.h",
|
|
|
|
|
"linux/thread_snapshot_linux.cc",
|
|
|
|
|
"linux/thread_snapshot_linux.h",
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
2018-01-18 14:34:41 -08:00
|
|
|
|
if (crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia) {
|
|
|
|
|
sources += [
|
|
|
|
|
"crashpad_types/crashpad_info_reader.cc",
|
|
|
|
|
"crashpad_types/crashpad_info_reader.h",
|
2018-01-19 14:03:34 -08:00
|
|
|
|
"elf/elf_dynamic_array_reader.cc",
|
|
|
|
|
"elf/elf_dynamic_array_reader.h",
|
|
|
|
|
"elf/elf_image_reader.cc",
|
|
|
|
|
"elf/elf_image_reader.h",
|
|
|
|
|
"elf/elf_symbol_table_reader.cc",
|
|
|
|
|
"elf/elf_symbol_table_reader.h",
|
2018-01-18 14:34:41 -08:00
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
if (crashpad_is_win) {
|
2017-11-29 11:59:18 -08:00
|
|
|
|
sources += [
|
|
|
|
|
"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/memory_snapshot_win.cc",
|
|
|
|
|
"win/memory_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",
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
if (crashpad_is_fuchsia) {
|
2017-12-05 15:43:23 -08:00
|
|
|
|
sources += [
|
|
|
|
|
"fuchsia/process_snapshot_fuchsia.cc",
|
|
|
|
|
"fuchsia/process_snapshot_fuchsia.h",
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
2017-11-17 17:48:22 -08:00
|
|
|
|
if (target_cpu == "x86" || target_cpu == "x64") {
|
|
|
|
|
sources += [
|
|
|
|
|
"x86/cpuid_reader.cc",
|
|
|
|
|
"x86/cpuid_reader.h",
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
2017-11-28 10:31:13 -08:00
|
|
|
|
public_configs = [ "..:crashpad_config" ]
|
2017-11-17 17:48:22 -08:00
|
|
|
|
|
|
|
|
|
deps = [
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"../client",
|
|
|
|
|
"../compat",
|
2017-12-18 14:35:55 -08:00
|
|
|
|
"../third_party/mini_chromium:base",
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"../util",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
]
|
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
if (crashpad_is_win) {
|
2017-11-17 17:48:22 -08:00
|
|
|
|
cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union
|
|
|
|
|
libs = [ "powrprof.lib" ]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
if (crashpad_is_win) {
|
2017-11-17 17:48:22 -08:00
|
|
|
|
static_library("snapshot_api") {
|
|
|
|
|
sources = [
|
|
|
|
|
"api/module_annotations_win.cc",
|
|
|
|
|
"api/module_annotations_win.h",
|
|
|
|
|
]
|
|
|
|
|
|
2017-11-28 10:31:13 -08:00
|
|
|
|
public_configs = [ "..:crashpad_config" ]
|
2017-11-17 17:48:22 -08:00
|
|
|
|
|
|
|
|
|
cflags = [ "/wd4201" ]
|
|
|
|
|
|
|
|
|
|
deps = [
|
|
|
|
|
":snapshot",
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"../compat",
|
2017-12-18 14:35:55 -08:00
|
|
|
|
"../third_party/mini_chromium:base",
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"../util",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
group("snapshot_api") {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static_library("test_support") {
|
|
|
|
|
testonly = true
|
|
|
|
|
|
|
|
|
|
sources = [
|
|
|
|
|
"test/test_cpu_context.cc",
|
|
|
|
|
"test/test_cpu_context.h",
|
|
|
|
|
"test/test_exception_snapshot.cc",
|
|
|
|
|
"test/test_exception_snapshot.h",
|
|
|
|
|
"test/test_memory_map_region_snapshot.cc",
|
|
|
|
|
"test/test_memory_map_region_snapshot.h",
|
|
|
|
|
"test/test_memory_snapshot.cc",
|
|
|
|
|
"test/test_memory_snapshot.h",
|
|
|
|
|
"test/test_module_snapshot.cc",
|
|
|
|
|
"test/test_module_snapshot.h",
|
|
|
|
|
"test/test_process_snapshot.cc",
|
|
|
|
|
"test/test_process_snapshot.h",
|
|
|
|
|
"test/test_system_snapshot.cc",
|
|
|
|
|
"test/test_system_snapshot.h",
|
|
|
|
|
"test/test_thread_snapshot.cc",
|
|
|
|
|
"test/test_thread_snapshot.h",
|
|
|
|
|
]
|
|
|
|
|
|
2017-11-28 10:31:13 -08:00
|
|
|
|
public_configs = [ "..:crashpad_config" ]
|
2017-11-17 17:48:22 -08:00
|
|
|
|
|
|
|
|
|
public_deps = [
|
|
|
|
|
":snapshot",
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
deps = [
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"../compat",
|
2017-12-18 14:35:55 -08:00
|
|
|
|
"../third_party/mini_chromium:base",
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"../util",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
]
|
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
if (crashpad_is_win) {
|
2017-11-17 17:48:22 -08:00
|
|
|
|
cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-19 14:21:14 -05:00
|
|
|
|
config("snapshot_test_link") {
|
|
|
|
|
visibility = [ ":*" ]
|
2018-01-19 14:03:34 -08:00
|
|
|
|
if (crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia) {
|
2017-12-19 14:21:14 -05:00
|
|
|
|
# There’s no way to make the link depend on this file. “inputs” doesn’t have
|
|
|
|
|
# the intended effect in a config. https://crbug.com/781858,
|
|
|
|
|
# https://crbug.com/796187.
|
|
|
|
|
inputs = [
|
|
|
|
|
"elf/test_exported_symbols.sym",
|
|
|
|
|
]
|
|
|
|
|
ldflags = [ "-Wl,--dynamic-list," + rebase_path(inputs[0], root_build_dir) ]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-11-17 17:48:22 -08:00
|
|
|
|
source_set("snapshot_test") {
|
|
|
|
|
testonly = true
|
|
|
|
|
|
|
|
|
|
sources = [
|
|
|
|
|
"cpu_context_test.cc",
|
2018-02-01 15:54:56 -08:00
|
|
|
|
"memory_snapshot_test.cc",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
"minidump/process_snapshot_minidump_test.cc",
|
|
|
|
|
]
|
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
if (crashpad_is_mac) {
|
2017-11-29 11:59:18 -08:00
|
|
|
|
sources += [
|
|
|
|
|
"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_test.cc",
|
|
|
|
|
"mac/process_types_test.cc",
|
|
|
|
|
"mac/system_snapshot_mac_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 += [
|
2018-01-09 10:22:24 -08:00
|
|
|
|
"crashpad_types/image_annotation_reader_test.cc",
|
2017-12-19 14:21:14 -05:00
|
|
|
|
"linux/debug_rendezvous_test.cc",
|
|
|
|
|
"linux/exception_snapshot_linux_test.cc",
|
|
|
|
|
"linux/process_reader_test.cc",
|
|
|
|
|
"linux/system_snapshot_linux_test.cc",
|
|
|
|
|
]
|
|
|
|
|
} else {
|
|
|
|
|
sources += [ "crashpad_info_client_options_test.cc" ]
|
|
|
|
|
}
|
|
|
|
|
|
2018-01-18 14:34:41 -08:00
|
|
|
|
if (crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia) {
|
2018-01-19 14:03:34 -08:00
|
|
|
|
sources += [
|
|
|
|
|
"crashpad_types/crashpad_info_reader_test.cc",
|
|
|
|
|
"elf/elf_image_reader_test.cc",
|
|
|
|
|
"elf/elf_image_reader_test_note.S",
|
|
|
|
|
"elf/test_exported_symbols.sym",
|
|
|
|
|
]
|
2018-01-18 14:34:41 -08:00
|
|
|
|
}
|
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
if (crashpad_is_win) {
|
2017-11-29 11:59:18 -08:00
|
|
|
|
sources += [
|
|
|
|
|
"api/module_annotations_win_test.cc",
|
|
|
|
|
"win/cpu_context_win_test.cc",
|
|
|
|
|
"win/exception_snapshot_win_test.cc",
|
|
|
|
|
"win/extra_memory_ranges_test.cc",
|
|
|
|
|
"win/pe_image_annotations_reader_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",
|
|
|
|
|
]
|
2017-11-17 17:48:22 -08:00
|
|
|
|
} else {
|
|
|
|
|
sources += [ "posix/timezone_test.cc" ]
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-19 14:21:14 -05:00
|
|
|
|
# public_configs isn’t quite right. snapshot_test_link sets ldflags, and
|
|
|
|
|
# what’s really needed is a way to push ldflags to dependent targets that
|
|
|
|
|
# produce linker output. Luckily in this case, all dependents do produce
|
|
|
|
|
# linker output. https://crbug.com/796183.
|
|
|
|
|
public_configs = [ ":snapshot_test_link" ]
|
|
|
|
|
|
2017-11-17 17:48:22 -08:00
|
|
|
|
deps = [
|
|
|
|
|
":snapshot_api",
|
|
|
|
|
":test_support",
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"../client",
|
|
|
|
|
"../compat",
|
|
|
|
|
"../test",
|
2017-12-18 14:35:55 -08:00
|
|
|
|
"../third_party/gtest:gtest",
|
|
|
|
|
"../third_party/mini_chromium:base",
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"../util",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
data_deps = [
|
|
|
|
|
":crashpad_snapshot_test_module",
|
|
|
|
|
":crashpad_snapshot_test_module_large",
|
|
|
|
|
":crashpad_snapshot_test_module_small",
|
|
|
|
|
]
|
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
if (crashpad_is_mac) {
|
2017-11-17 17:48:22 -08:00
|
|
|
|
libs = [ "OpenCL.framework" ]
|
|
|
|
|
|
|
|
|
|
data_deps += [
|
|
|
|
|
":crashpad_snapshot_test_module_crashy_initializer",
|
|
|
|
|
":crashpad_snapshot_test_no_op",
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-21 17:54:12 -05:00
|
|
|
|
if (crashpad_is_linux || crashpad_is_android) {
|
2017-12-19 14:21:14 -05:00
|
|
|
|
libs = [ "dl" ]
|
|
|
|
|
}
|
|
|
|
|
|
2018-02-02 14:04:48 -08:00
|
|
|
|
if (crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia) {
|
|
|
|
|
data_deps += [ ":crashpad_snapshot_test_both_dt_hash_styles" ]
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
if (crashpad_is_win) {
|
2017-11-17 17:48:22 -08:00
|
|
|
|
cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union
|
|
|
|
|
|
|
|
|
|
data_deps += [
|
|
|
|
|
":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",
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
loadable_module("crashpad_snapshot_test_module") {
|
|
|
|
|
testonly = true
|
|
|
|
|
sources = [
|
|
|
|
|
"crashpad_info_client_options_test_module.cc",
|
|
|
|
|
]
|
|
|
|
|
deps = [
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"../client",
|
2017-12-18 14:35:55 -08:00
|
|
|
|
"../third_party/mini_chromium:base",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
loadable_module("crashpad_snapshot_test_module_large") {
|
|
|
|
|
testonly = true
|
|
|
|
|
sources = [
|
|
|
|
|
"crashpad_info_size_test_module.cc",
|
|
|
|
|
]
|
|
|
|
|
defines = [ "CRASHPAD_INFO_SIZE_TEST_MODULE_LARGE" ]
|
|
|
|
|
deps = [
|
2017-12-18 14:35:55 -08:00
|
|
|
|
"../third_party/mini_chromium:base",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
loadable_module("crashpad_snapshot_test_module_small") {
|
|
|
|
|
testonly = true
|
|
|
|
|
sources = [
|
|
|
|
|
"crashpad_info_size_test_module.cc",
|
|
|
|
|
]
|
|
|
|
|
defines = [ "CRASHPAD_INFO_SIZE_TEST_MODULE_SMALL" ]
|
|
|
|
|
deps = [
|
2017-12-18 14:35:55 -08:00
|
|
|
|
"../third_party/mini_chromium:base",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
Read either DT_HASH or DT_GNU_HASH to determine the size of DT_SYMTAB
Without the section headers for the symbol table, there's no direct way
to calculate the number of entries in the table.
DT_HASH and DT_GNU_HASH are auxiliary tables that are designed to make
symbol lookup faster. DT_HASH is the original and is theoretically
mandatory. DT_GNU_HASH is the new-and-improved, but is more complex.
In practice, however, an Android build (at least vs. API 16) has only
DT_HASH, and not DT_GNU_HASH, and a Fuchsia build has only DT_GNU_HASH
but not DT_HASH. So, both are tried.
This change does not actually use the data in these tables to improve
the speed of symbol lookup, but instead only uses them to correctly
terminate the linear search.
DT_HASH contains the total number of symbols in the symbol table fairly
directly because there is an entry for each symbol table entry in the
hash table, so the number is the same.
DT_GNU_HASH regrettably does not. Instead, it's necessary to walk the
buckets and chain structure to find the largest entry.
DT_GNU_HASH doesn't appear in any "real" documentation that I'm aware
of, other than the binutils code (at least as far as I know). Some
more-and-less-useful references:
- https://flapenguin.me/2017/04/24/elf-lookup-dt-hash/
- https://flapenguin.me/2017/05/10/elf-lookup-dt-gnu-hash/
- http://deroko.phearless.org/dt_gnu_hash.txt
- https://sourceware.org/ml/binutils/2006-10/msg00377.html
Change-Id: I7cfc4372f29efc37446f0931d22a1f790e44076f
Bug: crashpad:213, crashpad:196
Reviewed-on: https://chromium-review.googlesource.com/876879
Commit-Queue: Scott Graham <scottmg@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2018-01-30 14:30:50 -08:00
|
|
|
|
if (crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia) {
|
|
|
|
|
loadable_module("crashpad_snapshot_test_both_dt_hash_styles") {
|
|
|
|
|
testonly = true
|
|
|
|
|
sources = [
|
|
|
|
|
"hash_types_test.cc",
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
# This makes `ld` emit both .hash and .gnu.hash sections.
|
|
|
|
|
ldflags = [ "-Wl,--hash-style=both" ]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
if (crashpad_is_mac) {
|
2017-11-17 17:48:22 -08:00
|
|
|
|
loadable_module("crashpad_snapshot_test_module_crashy_initializer") {
|
|
|
|
|
testonly = true
|
|
|
|
|
sources = [
|
|
|
|
|
"mac/mach_o_image_annotations_reader_test_module_crashy_initializer.cc",
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
executable("crashpad_snapshot_test_no_op") {
|
|
|
|
|
testonly = true
|
|
|
|
|
sources = [
|
|
|
|
|
"mac/mach_o_image_annotations_reader_test_no_op.cc",
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-19 15:31:04 -08:00
|
|
|
|
if (crashpad_is_win) {
|
2017-11-17 17:48:22 -08:00
|
|
|
|
executable("crashpad_snapshot_test_annotations") {
|
|
|
|
|
testonly = true
|
|
|
|
|
sources = [
|
|
|
|
|
"win/crashpad_snapshot_test_annotations.cc",
|
|
|
|
|
]
|
|
|
|
|
deps = [
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"../client",
|
|
|
|
|
"../compat",
|
2017-12-18 14:35:55 -08:00
|
|
|
|
"../third_party/mini_chromium:base",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
executable("crashpad_snapshot_test_crashing_child") {
|
|
|
|
|
testonly = true
|
|
|
|
|
sources = [
|
|
|
|
|
"win/crashpad_snapshot_test_crashing_child.cc",
|
|
|
|
|
]
|
|
|
|
|
deps = [
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"../client",
|
|
|
|
|
"../compat",
|
2017-12-18 14:35:55 -08:00
|
|
|
|
"../third_party/mini_chromium:base",
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"../util",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
executable("crashpad_snapshot_test_dump_without_crashing") {
|
|
|
|
|
testonly = true
|
|
|
|
|
sources = [
|
|
|
|
|
"win/crashpad_snapshot_test_dump_without_crashing.cc",
|
|
|
|
|
]
|
|
|
|
|
deps = [
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"../client",
|
|
|
|
|
"../compat",
|
2017-12-18 14:35:55 -08:00
|
|
|
|
"../third_party/mini_chromium:base",
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"../util",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
executable("crashpad_snapshot_test_extra_memory_ranges") {
|
|
|
|
|
testonly = true
|
|
|
|
|
sources = [
|
|
|
|
|
"win/crashpad_snapshot_test_extra_memory_ranges.cc",
|
|
|
|
|
]
|
|
|
|
|
deps = [
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"../client",
|
|
|
|
|
"../compat",
|
2017-12-18 14:35:55 -08:00
|
|
|
|
"../third_party/mini_chromium:base",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
executable("crashpad_snapshot_test_image_reader") {
|
|
|
|
|
testonly = true
|
|
|
|
|
sources = [
|
|
|
|
|
"win/crashpad_snapshot_test_image_reader.cc",
|
|
|
|
|
]
|
|
|
|
|
deps = [
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"../client",
|
|
|
|
|
"../compat",
|
2017-12-18 14:35:55 -08:00
|
|
|
|
"../third_party/mini_chromium:base",
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"../util",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
]
|
2017-12-19 17:15:10 -08:00
|
|
|
|
if (crashpad_is_in_chromium) {
|
|
|
|
|
if (symbol_level == 0) {
|
|
|
|
|
# The tests that use this executable rely on at least minimal debug
|
|
|
|
|
# info.
|
|
|
|
|
configs -= [ "//build/config/compiler:default_symbols" ]
|
|
|
|
|
configs += [ "//build/config/compiler:minimal_symbols" ]
|
|
|
|
|
}
|
2017-11-17 17:48:22 -08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
loadable_module("crashpad_snapshot_test_image_reader_module") {
|
|
|
|
|
testonly = true
|
|
|
|
|
sources = [
|
|
|
|
|
"win/crashpad_snapshot_test_image_reader_module.cc",
|
|
|
|
|
]
|
|
|
|
|
deps = [
|
2017-11-28 10:31:13 -08:00
|
|
|
|
"../client",
|
2017-12-18 14:35:55 -08:00
|
|
|
|
"../third_party/mini_chromium:base",
|
2017-11-17 17:48:22 -08:00
|
|
|
|
]
|
2017-12-19 17:15:10 -08:00
|
|
|
|
if (crashpad_is_in_chromium) {
|
|
|
|
|
if (symbol_level == 0) {
|
|
|
|
|
# The tests that use this module rely on at least minimal debug info.
|
|
|
|
|
configs -= [ "//build/config/compiler:default_symbols" ]
|
|
|
|
|
configs += [ "//build/config/compiler:minimal_symbols" ]
|
|
|
|
|
}
|
2017-11-17 17:48:22 -08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|