| # 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. |
| |
| import("../build/crashpad_buildconfig.gni") |
| import("../build/crashpad_fuzzer_test.gni") |
| |
| if (crashpad_is_in_chromium) { |
| import("//build/config/compiler/compiler.gni") |
| |
| # Prevent Chromium source assignment filters from being inherited. |
| set_sources_assignment_filter([]) |
| } |
| |
| 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", |
| "memory_snapshot.cc", |
| "memory_snapshot.h", |
| "memory_snapshot_generic.h", |
| "minidump/exception_snapshot_minidump.cc", |
| "minidump/exception_snapshot_minidump.h", |
| "minidump/memory_snapshot_minidump.cc", |
| "minidump/memory_snapshot_minidump.h", |
| "minidump/minidump_annotation_reader.cc", |
| "minidump/minidump_annotation_reader.h", |
| "minidump/minidump_context_converter.cc", |
| "minidump/minidump_context_converter.h", |
| "minidump/minidump_simple_string_dictionary_reader.cc", |
| "minidump/minidump_simple_string_dictionary_reader.h", |
| "minidump/minidump_stream.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", |
| "minidump/system_snapshot_minidump.cc", |
| "minidump/system_snapshot_minidump.h", |
| "minidump/thread_snapshot_minidump.cc", |
| "minidump/thread_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", |
| ] |
| |
| if (crashpad_is_posix || crashpad_is_fuchsia) { |
| sources += [ |
| "posix/timezone.cc", |
| "posix/timezone.h", |
| ] |
| } |
| |
| if (crashpad_is_mac) { |
| 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/module_snapshot_mac.cc", |
| "mac/module_snapshot_mac.h", |
| "mac/process_reader_mac.cc", |
| "mac/process_reader_mac.h", |
| "mac/process_snapshot_mac.cc", |
| "mac/process_snapshot_mac.h", |
| "mac/process_types.cc", |
| "mac/process_types.h", |
| "mac/process_types/custom.cc", |
| "mac/process_types/flavors.h", |
| "mac/process_types/internal.h", |
| "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", |
| ] |
| } |
| |
| if (crashpad_is_ios) { |
| sources += [ |
| "ios/exception_snapshot_ios.cc", |
| "ios/exception_snapshot_ios.h", |
| "ios/memory_snapshot_ios.cc", |
| "ios/memory_snapshot_ios.h", |
| "ios/module_snapshot_ios.cc", |
| "ios/module_snapshot_ios.h", |
| "ios/process_snapshot_ios.cc", |
| "ios/process_snapshot_ios.h", |
| "ios/system_snapshot_ios.cc", |
| "ios/system_snapshot_ios.h", |
| "ios/thread_snapshot_ios.cc", |
| "ios/thread_snapshot_ios.h", |
| "mac/cpu_context_mac.cc", |
| "mac/cpu_context_mac.h", |
| ] |
| } |
| |
| if (crashpad_is_linux || crashpad_is_android) { |
| sources += [ |
| "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/process_reader_linux.cc", |
| "linux/process_reader_linux.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", |
| "sanitized/memory_snapshot_sanitized.cc", |
| "sanitized/memory_snapshot_sanitized.h", |
| "sanitized/module_snapshot_sanitized.cc", |
| "sanitized/module_snapshot_sanitized.h", |
| "sanitized/process_snapshot_sanitized.cc", |
| "sanitized/process_snapshot_sanitized.h", |
| "sanitized/sanitization_information.cc", |
| "sanitized/sanitization_information.h", |
| "sanitized/thread_snapshot_sanitized.cc", |
| "sanitized/thread_snapshot_sanitized.h", |
| ] |
| } |
| |
| if (crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia || |
| crashpad_is_win) { |
| sources += [ |
| "crashpad_types/crashpad_info_reader.cc", |
| "crashpad_types/crashpad_info_reader.h", |
| ] |
| } |
| |
| if (crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia) { |
| sources += [ |
| "crashpad_types/image_annotation_reader.cc", |
| "crashpad_types/image_annotation_reader.h", |
| "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", |
| "elf/module_snapshot_elf.cc", |
| "elf/module_snapshot_elf.h", |
| ] |
| } |
| |
| if (crashpad_is_win) { |
| 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/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", |
| ] |
| } |
| |
| if (crashpad_is_fuchsia) { |
| sources += [ |
| "fuchsia/cpu_context_fuchsia.cc", |
| "fuchsia/cpu_context_fuchsia.h", |
| "fuchsia/exception_snapshot_fuchsia.cc", |
| "fuchsia/exception_snapshot_fuchsia.h", |
| "fuchsia/memory_map_fuchsia.cc", |
| "fuchsia/memory_map_fuchsia.h", |
| "fuchsia/memory_map_region_snapshot_fuchsia.cc", |
| "fuchsia/memory_map_region_snapshot_fuchsia.h", |
| "fuchsia/process_reader_fuchsia.cc", |
| "fuchsia/process_reader_fuchsia.h", |
| "fuchsia/process_snapshot_fuchsia.cc", |
| "fuchsia/process_snapshot_fuchsia.h", |
| "fuchsia/system_snapshot_fuchsia.cc", |
| "fuchsia/system_snapshot_fuchsia.h", |
| "fuchsia/thread_snapshot_fuchsia.cc", |
| "fuchsia/thread_snapshot_fuchsia.h", |
| ] |
| } |
| |
| if (target_cpu == "x86" || target_cpu == "x64") { |
| sources += [ |
| "x86/cpuid_reader.cc", |
| "x86/cpuid_reader.h", |
| ] |
| } |
| |
| public_configs = [ "..:crashpad_config" ] |
| |
| deps = [ |
| "../client", |
| "../compat", |
| "../third_party/mini_chromium:base", |
| "../util", |
| ] |
| |
| if (crashpad_is_ios) { |
| deps -= [ "../client" ] |
| } |
| |
| if (crashpad_is_win) { |
| cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union |
| libs = [ "powrprof.lib" ] |
| } |
| |
| configs += [ "..:disable_ubsan" ] |
| } |
| |
| if (crashpad_is_linux) { |
| crashpad_fuzzer_test("elf_image_reader_fuzzer") { |
| sources = [ "elf/elf_image_reader_fuzzer.cc" ] |
| |
| deps = [ |
| ":snapshot", |
| "../third_party/mini_chromium:base", |
| ] |
| seed_corpus = "elf/elf_image_reader_fuzzer_corpus" |
| } |
| } |
| |
| 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", |
| ] |
| |
| public_configs = [ "..:crashpad_config" ] |
| |
| public_deps = [ ":snapshot" ] |
| |
| deps = [ |
| "../compat", |
| "../third_party/mini_chromium:base", |
| "../util", |
| ] |
| |
| if (crashpad_is_win) { |
| cflags = [ "/wd4201" ] # nonstandard extension used : nameless struct/union |
| } |
| } |
| |
| config("snapshot_test_link") { |
| visibility = [ ":*" ] |
| if (crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia) { |
| # 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) ] |
| } |
| } |
| |
| source_set("snapshot_test") { |
| testonly = true |
| |
| sources = [ |
| "cpu_context_test.cc", |
| "memory_snapshot_test.cc", |
| "minidump/process_snapshot_minidump_test.cc", |
| ] |
| |
| if (crashpad_is_mac) { |
| 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_mac_test.cc", |
| "mac/process_types_test.cc", |
| "mac/system_snapshot_mac_test.cc", |
| ] |
| } |
| |
| if (crashpad_is_linux || crashpad_is_android) { |
| sources += [ |
| "linux/debug_rendezvous_test.cc", |
| "linux/exception_snapshot_linux_test.cc", |
| "linux/process_reader_linux_test.cc", |
| "linux/system_snapshot_linux_test.cc", |
| "sanitized/process_snapshot_sanitized_test.cc", |
| "sanitized/sanitization_information_test.cc", |
| ] |
| } else if (!crashpad_is_ios) { |
| sources += [ "crashpad_info_client_options_test.cc" ] |
| } |
| |
| if (crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia || |
| crashpad_is_win) { |
| sources += [ "crashpad_types/crashpad_info_reader_test.cc" ] |
| } |
| |
| if (crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia) { |
| sources += [ |
| "crashpad_types/image_annotation_reader_test.cc", |
| "elf/elf_image_reader_test.cc", |
| "elf/elf_image_reader_test_note.S", |
| ] |
| } |
| |
| if (crashpad_is_win) { |
| sources += [ |
| "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", |
| ] |
| } else if (!crashpad_is_fuchsia) { |
| # Timezones are currently non-functional on Fuchsia: |
| # https://fuchsia.googlesource.com/zircon/+/master/third_party/ulib/musl/src/time/__tz.c#9 |
| # https://crashpad.chromium.org/bug/196. Relevant upstream bugs are ZX-337 |
| # and ZX-1731. |
| sources += [ "posix/timezone_test.cc" ] |
| } |
| |
| if (crashpad_is_fuchsia) { |
| sources += [ |
| "fuchsia/process_reader_fuchsia_test.cc", |
| "fuchsia/process_snapshot_fuchsia_test.cc", |
| ] |
| } |
| |
| # 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" ] |
| |
| deps = [ |
| ":test_support", |
| "../client", |
| "../compat", |
| "../test", |
| "../third_party/gtest:gtest", |
| "../third_party/mini_chromium:base", |
| "../util", |
| ] |
| |
| data_deps = [ |
| ":crashpad_snapshot_test_module", |
| ":crashpad_snapshot_test_module_large", |
| ":crashpad_snapshot_test_module_small", |
| ] |
| |
| if (crashpad_is_mac) { |
| libs = [ "OpenCL.framework" ] |
| |
| data_deps += [ |
| ":crashpad_snapshot_test_module_crashy_initializer", |
| ":crashpad_snapshot_test_no_op", |
| ] |
| } |
| |
| if (crashpad_is_linux || crashpad_is_android) { |
| libs = [ "dl" ] |
| } |
| |
| if ((crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia) && |
| target_cpu != "mipsel" && target_cpu != "mips64el") { |
| data_deps += [ ":crashpad_snapshot_test_both_dt_hash_styles" ] |
| } |
| |
| if (crashpad_is_win) { |
| 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", |
| ] |
| } |
| } |
| |
| crashpad_loadable_module("crashpad_snapshot_test_module") { |
| testonly = true |
| sources = [ "crashpad_info_client_options_test_module.cc" ] |
| deps = [ |
| "../client", |
| "../third_party/mini_chromium:base", |
| ] |
| } |
| |
| crashpad_loadable_module("crashpad_snapshot_test_module_large") { |
| testonly = true |
| sources = [ "crashpad_info_size_test_module.cc" ] |
| |
| deps = [] |
| if (crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia) { |
| sources += [ "crashpad_info_size_test_note.S" ] |
| deps += [ "../util" ] |
| } |
| |
| defines = [ "CRASHPAD_INFO_SIZE_TEST_MODULE_LARGE" ] |
| deps += [ "../third_party/mini_chromium:base" ] |
| } |
| |
| crashpad_loadable_module("crashpad_snapshot_test_module_small") { |
| testonly = true |
| sources = [ "crashpad_info_size_test_module.cc" ] |
| |
| deps = [] |
| if (crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia) { |
| sources += [ "crashpad_info_size_test_note.S" ] |
| deps += [ "../util" ] |
| } |
| |
| defines = [ "CRASHPAD_INFO_SIZE_TEST_MODULE_SMALL" ] |
| deps += [ "../third_party/mini_chromium:base" ] |
| } |
| |
| if ((crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia) && |
| target_cpu != "mipsel" && target_cpu != "mips64el") { |
| crashpad_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" ] |
| } |
| } |
| |
| if (crashpad_is_mac) { |
| crashpad_loadable_module("crashpad_snapshot_test_module_crashy_initializer") { |
| testonly = true |
| sources = [ |
| "mac/mach_o_image_annotations_reader_test_module_crashy_initializer.cc", |
| ] |
| } |
| |
| crashpad_executable("crashpad_snapshot_test_no_op") { |
| testonly = true |
| sources = [ "mac/mach_o_image_annotations_reader_test_no_op.cc" ] |
| } |
| } |
| |
| if (crashpad_is_win) { |
| crashpad_executable("crashpad_snapshot_test_annotations") { |
| testonly = true |
| sources = [ "win/crashpad_snapshot_test_annotations.cc" ] |
| deps = [ |
| "../client", |
| "../compat", |
| "../third_party/mini_chromium:base", |
| ] |
| } |
| |
| crashpad_executable("crashpad_snapshot_test_crashing_child") { |
| testonly = true |
| sources = [ "win/crashpad_snapshot_test_crashing_child.cc" ] |
| deps = [ |
| "../client", |
| "../compat", |
| "../third_party/mini_chromium:base", |
| "../util", |
| ] |
| } |
| |
| crashpad_executable("crashpad_snapshot_test_dump_without_crashing") { |
| testonly = true |
| sources = [ "win/crashpad_snapshot_test_dump_without_crashing.cc" ] |
| deps = [ |
| "../client", |
| "../compat", |
| "../third_party/mini_chromium:base", |
| "../util", |
| ] |
| } |
| |
| crashpad_executable("crashpad_snapshot_test_extra_memory_ranges") { |
| testonly = true |
| sources = [ "win/crashpad_snapshot_test_extra_memory_ranges.cc" ] |
| deps = [ |
| "../client", |
| "../compat", |
| "../third_party/mini_chromium:base", |
| ] |
| } |
| |
| crashpad_executable("crashpad_snapshot_test_image_reader") { |
| testonly = true |
| sources = [ "win/crashpad_snapshot_test_image_reader.cc" ] |
| deps = [ |
| "../client", |
| "../compat", |
| "../third_party/mini_chromium:base", |
| "../util", |
| ] |
| if (crashpad_is_in_chromium) { |
| if (symbol_level == 0) { |
| # The tests that use this executable rely on at least minimal debug |
| # info. |
| remove_configs = [ "//build/config/compiler:default_symbols" ] |
| configs = [ "//build/config/compiler:minimal_symbols" ] |
| } |
| } |
| } |
| |
| crashpad_loadable_module("crashpad_snapshot_test_image_reader_module") { |
| testonly = true |
| sources = [ "win/crashpad_snapshot_test_image_reader_module.cc" ] |
| deps = [ |
| "../client", |
| "../third_party/mini_chromium:base", |
| ] |
| if (crashpad_is_in_chromium) { |
| if (symbol_level == 0) { |
| # The tests that use this module rely on at least minimal debug info. |
| remove_configs = [ "//build/config/compiler:default_symbols" ] |
| configs = [ "//build/config/compiler:minimal_symbols" ] |
| } |
| } |
| } |
| } |