mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-24 14:26:09 +03:00
970 lines
34 KiB
Plaintext
970 lines
34 KiB
Plaintext
# Copyright 2014 The Chromium Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
import("//build/symlink.gni")
|
|
import("//testing/libfuzzer/fuzzer_test.gni")
|
|
import("//testing/test.gni")
|
|
|
|
if (is_win) {
|
|
import("//build/config/win/visual_studio_version.gni")
|
|
}
|
|
|
|
config("tools_config") {
|
|
include_dirs = [
|
|
"breakpad/src",
|
|
"breakpad/src/third_party",
|
|
]
|
|
if (is_android) {
|
|
defines = [ "__ANDROID__" ]
|
|
}
|
|
if (is_clang) {
|
|
cflags = [ "-Wno-tautological-constant-out-of-range-compare" ]
|
|
}
|
|
}
|
|
|
|
config("internal_config") {
|
|
include_dirs = [ "breakpad/src" ]
|
|
defines = []
|
|
if (is_debug) {
|
|
# This is needed for GTMLogger to work correctly.
|
|
defines += [ "DEBUG" ]
|
|
}
|
|
if (is_android) {
|
|
defines += [ "__ANDROID__" ]
|
|
}
|
|
}
|
|
|
|
config("client_config") {
|
|
include_dirs = [ "breakpad/src" ]
|
|
if (is_android) {
|
|
include_dirs += [ "breakpad/src/common/android/include" ]
|
|
}
|
|
if (is_chromeos) {
|
|
defines = [ "__CHROMEOS__" ]
|
|
}
|
|
}
|
|
|
|
config("handler_config") {
|
|
include_dirs = [ "breakpad/src" ]
|
|
}
|
|
|
|
config("sender_config") {
|
|
include_dirs = [ "breakpad/src" ]
|
|
}
|
|
|
|
config("breakpad_unittest_config") {
|
|
# One of the breakpad unit tests test that we can detect the proper build-id.
|
|
# We must override the build-id for this one target.
|
|
ldflags = [ "-Wl,--build-id=0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f" ]
|
|
}
|
|
|
|
config("default_logging_severity_config") {
|
|
defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ]
|
|
}
|
|
|
|
config("fuzzing_logging_severity_config") {
|
|
defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_CRITICAL" ]
|
|
}
|
|
|
|
default_breakpad_configs = [ ":tools_config" ]
|
|
|
|
if (use_fuzzing_engine) {
|
|
default_breakpad_configs += [ ":fuzzing_logging_severity_config" ]
|
|
} else {
|
|
default_breakpad_configs += [ ":default_logging_severity_config" ]
|
|
}
|
|
|
|
# {micro,mini}dump_stackwalk and minidump_dump are tool-type executables
|
|
# that do not build on Windows.
|
|
if (!is_win) {
|
|
if (current_toolchain == host_toolchain) {
|
|
# Contains the code shared by both {micro,mini}dump_stackwalk.
|
|
static_library("stackwalk_common") {
|
|
# Always want these files included regardless of platform.
|
|
set_sources_assignment_filter([])
|
|
sources = [
|
|
"breakpad/src/common/path_helper.cc",
|
|
"breakpad/src/common/path_helper.h",
|
|
"breakpad/src/processor/basic_code_module.h",
|
|
"breakpad/src/processor/basic_code_modules.cc",
|
|
"breakpad/src/processor/basic_code_modules.h",
|
|
"breakpad/src/processor/basic_source_line_resolver.cc",
|
|
"breakpad/src/processor/call_stack.cc",
|
|
"breakpad/src/processor/cfi_frame_info.cc",
|
|
"breakpad/src/processor/cfi_frame_info.h",
|
|
"breakpad/src/processor/disassembler_x86.cc",
|
|
"breakpad/src/processor/disassembler_x86.h",
|
|
"breakpad/src/processor/dump_context.cc",
|
|
"breakpad/src/processor/dump_object.cc",
|
|
"breakpad/src/processor/logging.cc",
|
|
"breakpad/src/processor/logging.h",
|
|
"breakpad/src/processor/pathname_stripper.cc",
|
|
"breakpad/src/processor/pathname_stripper.h",
|
|
"breakpad/src/processor/proc_maps_linux.cc",
|
|
"breakpad/src/processor/process_state.cc",
|
|
"breakpad/src/processor/simple_symbol_supplier.cc",
|
|
"breakpad/src/processor/simple_symbol_supplier.h",
|
|
"breakpad/src/processor/source_line_resolver_base.cc",
|
|
"breakpad/src/processor/stack_frame_cpu.cc",
|
|
"breakpad/src/processor/stack_frame_symbolizer.cc",
|
|
"breakpad/src/processor/stackwalk_common.cc",
|
|
"breakpad/src/processor/stackwalker.cc",
|
|
"breakpad/src/processor/stackwalker_amd64.cc",
|
|
"breakpad/src/processor/stackwalker_amd64.h",
|
|
"breakpad/src/processor/stackwalker_arm.cc",
|
|
"breakpad/src/processor/stackwalker_arm.h",
|
|
"breakpad/src/processor/stackwalker_arm64.cc",
|
|
"breakpad/src/processor/stackwalker_arm64.h",
|
|
"breakpad/src/processor/stackwalker_mips.cc",
|
|
"breakpad/src/processor/stackwalker_mips.h",
|
|
"breakpad/src/processor/stackwalker_ppc.cc",
|
|
"breakpad/src/processor/stackwalker_ppc.h",
|
|
"breakpad/src/processor/stackwalker_ppc64.cc",
|
|
"breakpad/src/processor/stackwalker_ppc64.h",
|
|
"breakpad/src/processor/stackwalker_sparc.cc",
|
|
"breakpad/src/processor/stackwalker_sparc.h",
|
|
"breakpad/src/processor/stackwalker_x86.cc",
|
|
"breakpad/src/processor/stackwalker_x86.h",
|
|
"breakpad/src/processor/tokenize.cc",
|
|
"breakpad/src/processor/tokenize.h",
|
|
|
|
# libdisasm
|
|
"breakpad/src/third_party/libdisasm/ia32_implicit.c",
|
|
"breakpad/src/third_party/libdisasm/ia32_implicit.h",
|
|
"breakpad/src/third_party/libdisasm/ia32_insn.c",
|
|
"breakpad/src/third_party/libdisasm/ia32_insn.h",
|
|
"breakpad/src/third_party/libdisasm/ia32_invariant.c",
|
|
"breakpad/src/third_party/libdisasm/ia32_invariant.h",
|
|
"breakpad/src/third_party/libdisasm/ia32_modrm.c",
|
|
"breakpad/src/third_party/libdisasm/ia32_modrm.h",
|
|
"breakpad/src/third_party/libdisasm/ia32_opcode_tables.c",
|
|
"breakpad/src/third_party/libdisasm/ia32_opcode_tables.h",
|
|
"breakpad/src/third_party/libdisasm/ia32_operand.c",
|
|
"breakpad/src/third_party/libdisasm/ia32_operand.h",
|
|
"breakpad/src/third_party/libdisasm/ia32_reg.c",
|
|
"breakpad/src/third_party/libdisasm/ia32_reg.h",
|
|
"breakpad/src/third_party/libdisasm/ia32_settings.c",
|
|
"breakpad/src/third_party/libdisasm/ia32_settings.h",
|
|
"breakpad/src/third_party/libdisasm/libdis.h",
|
|
"breakpad/src/third_party/libdisasm/qword.h",
|
|
"breakpad/src/third_party/libdisasm/x86_disasm.c",
|
|
"breakpad/src/third_party/libdisasm/x86_format.c",
|
|
"breakpad/src/third_party/libdisasm/x86_imm.c",
|
|
"breakpad/src/third_party/libdisasm/x86_imm.h",
|
|
"breakpad/src/third_party/libdisasm/x86_insn.c",
|
|
"breakpad/src/third_party/libdisasm/x86_misc.c",
|
|
"breakpad/src/third_party/libdisasm/x86_operand_list.c",
|
|
"breakpad/src/third_party/libdisasm/x86_operand_list.h",
|
|
]
|
|
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
configs += default_breakpad_configs
|
|
}
|
|
|
|
fuzzer_test("minidump_fuzzer") {
|
|
sources = [
|
|
"breakpad/src/processor/exploitability.cc",
|
|
"breakpad/src/processor/minidump.cc",
|
|
"breakpad/src/processor/minidump_processor.cc",
|
|
"minidump_fuzzer.cc",
|
|
]
|
|
|
|
deps = [
|
|
":stackwalk_common",
|
|
"//base",
|
|
]
|
|
|
|
additional_configs = [ ":fuzzing_logging_severity_config" ]
|
|
include_dirs = [ "breakpad/src" ]
|
|
|
|
libfuzzer_options = [
|
|
# Suppress stdout from stackwalk_common, as it uses printf() directly.
|
|
"close_fd_mask=1",
|
|
"max_len=128000",
|
|
]
|
|
|
|
# Always want these files included regardless of platform.
|
|
set_sources_assignment_filter([])
|
|
sources += [
|
|
"breakpad/src/processor/exploitability_linux.cc",
|
|
"breakpad/src/processor/exploitability_linux.h",
|
|
"breakpad/src/processor/exploitability_win.cc",
|
|
"breakpad/src/processor/exploitability_win.h",
|
|
"breakpad/src/processor/symbolic_constants_win.cc",
|
|
"breakpad/src/processor/symbolic_constants_win.h",
|
|
]
|
|
}
|
|
|
|
executable("microdump_stackwalk") {
|
|
sources = [
|
|
"breakpad/src/processor/microdump.cc",
|
|
"breakpad/src/processor/microdump_processor.cc",
|
|
"breakpad/src/processor/microdump_stackwalk.cc",
|
|
]
|
|
|
|
deps = [
|
|
":stackwalk_common",
|
|
]
|
|
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
configs += default_breakpad_configs
|
|
}
|
|
|
|
executable("minidump_stackwalk") {
|
|
sources = [
|
|
"breakpad/src/processor/exploitability.cc",
|
|
"breakpad/src/processor/minidump.cc",
|
|
"breakpad/src/processor/minidump_processor.cc",
|
|
"breakpad/src/processor/minidump_stackwalk.cc",
|
|
]
|
|
|
|
deps = [
|
|
":stackwalk_common",
|
|
]
|
|
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
configs += default_breakpad_configs
|
|
|
|
# Always want these files included regardless of platform.
|
|
set_sources_assignment_filter([])
|
|
sources += [
|
|
"breakpad/src/processor/exploitability_linux.cc",
|
|
"breakpad/src/processor/exploitability_linux.h",
|
|
"breakpad/src/processor/exploitability_win.cc",
|
|
"breakpad/src/processor/exploitability_win.h",
|
|
"breakpad/src/processor/symbolic_constants_win.cc",
|
|
"breakpad/src/processor/symbolic_constants_win.h",
|
|
]
|
|
}
|
|
|
|
executable("minidump_dump") {
|
|
set_sources_assignment_filter([])
|
|
sources = [
|
|
"breakpad/src/processor/basic_code_module.h",
|
|
"breakpad/src/processor/basic_code_modules.cc",
|
|
"breakpad/src/processor/basic_code_modules.h",
|
|
"breakpad/src/processor/dump_context.cc",
|
|
"breakpad/src/processor/dump_object.cc",
|
|
"breakpad/src/processor/logging.cc",
|
|
"breakpad/src/processor/logging.h",
|
|
"breakpad/src/processor/minidump.cc",
|
|
"breakpad/src/processor/minidump_dump.cc",
|
|
"breakpad/src/processor/pathname_stripper.cc",
|
|
"breakpad/src/processor/pathname_stripper.h",
|
|
"breakpad/src/processor/proc_maps_linux.cc",
|
|
]
|
|
|
|
configs += [ ":tools_config" ]
|
|
|
|
# There are some warnings in this code.
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
}
|
|
} else {
|
|
# Aliases for convenience.
|
|
binary_symlink("microdump_stackwalk") {
|
|
binary_label = ":$target_name($host_toolchain)"
|
|
}
|
|
binary_symlink("minidump_stackwalk") {
|
|
binary_label = ":$target_name($host_toolchain)"
|
|
}
|
|
binary_symlink("minidump_dump") {
|
|
binary_label = ":$target_name($host_toolchain)"
|
|
}
|
|
}
|
|
}
|
|
|
|
# Mac --------------------------------------------------------------------------
|
|
|
|
if (is_mac) {
|
|
if (current_toolchain == host_toolchain) {
|
|
executable("dump_syms") {
|
|
sources = [
|
|
"breakpad/src/common/dwarf/bytereader.cc",
|
|
"breakpad/src/common/dwarf/dwarf2diehandler.cc",
|
|
"breakpad/src/common/dwarf/dwarf2reader.cc",
|
|
"breakpad/src/common/dwarf/elf_reader.cc",
|
|
"breakpad/src/common/dwarf/elf_reader.h",
|
|
"breakpad/src/common/dwarf_cfi_to_module.cc",
|
|
"breakpad/src/common/dwarf_cu_to_module.cc",
|
|
"breakpad/src/common/dwarf_line_to_module.cc",
|
|
"breakpad/src/common/language.cc",
|
|
"breakpad/src/common/mac/arch_utilities.cc",
|
|
"breakpad/src/common/mac/arch_utilities.h",
|
|
"breakpad/src/common/mac/dump_syms.cc",
|
|
"breakpad/src/common/mac/file_id.cc",
|
|
"breakpad/src/common/mac/macho_id.cc",
|
|
"breakpad/src/common/mac/macho_reader.cc",
|
|
"breakpad/src/common/mac/macho_utilities.cc",
|
|
"breakpad/src/common/mac/macho_walker.cc",
|
|
"breakpad/src/common/md5.cc",
|
|
"breakpad/src/common/module.cc",
|
|
"breakpad/src/common/path_helper.cc",
|
|
"breakpad/src/common/path_helper.h",
|
|
"breakpad/src/common/stabs_reader.cc",
|
|
"breakpad/src/common/stabs_to_module.cc",
|
|
"breakpad/src/tools/mac/dump_syms/dump_syms_tool.cc",
|
|
]
|
|
|
|
# For breakpad/src/common/stabs_reader.h.
|
|
defines = [ "HAVE_MACH_O_NLIST_H" ]
|
|
include_dirs = [ "breakpad/src/common/mac" ]
|
|
|
|
# The DWARF utilities require -funsigned-char.
|
|
cflags = [ "-funsigned-char" ]
|
|
|
|
configs += [ ":internal_config" ]
|
|
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
|
|
# dwarf2reader.cc uses dynamic_cast.
|
|
configs -= [ "//build/config/compiler:no_rtti" ]
|
|
configs += [ "//build/config/compiler:rtti" ]
|
|
|
|
libs = [ "Foundation.framework" ]
|
|
|
|
if (!is_debug) {
|
|
# dump_syms crashes when built at -O1, -O2, and -O3. It does
|
|
# not crash at -Os. To play it safe, dump_syms is always built
|
|
# at -O0 until this can be sorted out.
|
|
# https://crbug.com/google-breakpad/329
|
|
configs -= [ "//build/config/compiler:default_optimization" ]
|
|
cflags += [ "-O0" ]
|
|
}
|
|
}
|
|
|
|
executable("symupload") {
|
|
sources = [
|
|
"breakpad/src/common/mac/HTTPMultipartUpload.m",
|
|
"breakpad/src/tools/mac/symupload/symupload.m",
|
|
]
|
|
|
|
include_dirs = [ "breakpad/src/common/mac" ]
|
|
|
|
libs = [ "Foundation.framework" ]
|
|
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
}
|
|
} else {
|
|
binary_symlink("dump_syms") {
|
|
binary_label = ":$target_name($host_toolchain)"
|
|
}
|
|
binary_symlink("symupload") {
|
|
binary_label = ":$target_name($host_toolchain)"
|
|
}
|
|
}
|
|
}
|
|
|
|
if (is_ios) {
|
|
binary_symlink("dump_syms") {
|
|
binary_label = ":$target_name($host_toolchain)"
|
|
}
|
|
binary_symlink("symupload") {
|
|
binary_label = ":$target_name($host_toolchain)"
|
|
}
|
|
}
|
|
|
|
if (is_mac) {
|
|
static_library("utilities") {
|
|
sources = [
|
|
"breakpad/src/client/mac/crash_generation/ConfigFile.mm",
|
|
"breakpad/src/client/mac/handler/breakpad_nlist_64.cc",
|
|
"breakpad/src/client/mac/handler/dynamic_images.cc",
|
|
"breakpad/src/client/mac/handler/minidump_generator.cc",
|
|
"breakpad/src/client/minidump_file_writer.cc",
|
|
"breakpad/src/common/convert_UTF.c",
|
|
"breakpad/src/common/mac/MachIPC.mm",
|
|
"breakpad/src/common/mac/arch_utilities.cc",
|
|
"breakpad/src/common/mac/bootstrap_compat.cc",
|
|
"breakpad/src/common/mac/file_id.cc",
|
|
"breakpad/src/common/mac/launch_reporter.cc",
|
|
"breakpad/src/common/mac/macho_id.cc",
|
|
"breakpad/src/common/mac/macho_utilities.cc",
|
|
"breakpad/src/common/mac/macho_walker.cc",
|
|
"breakpad/src/common/mac/string_utilities.cc",
|
|
"breakpad/src/common/md5.cc",
|
|
"breakpad/src/common/simple_string_dictionary.cc",
|
|
"breakpad/src/common/string_conversion.cc",
|
|
]
|
|
|
|
configs += [ ":internal_config" ]
|
|
|
|
# There are some warnings in this code.
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
}
|
|
|
|
executable("crash_inspector") {
|
|
sources = [
|
|
"breakpad/src/client/mac/crash_generation/Inspector.mm",
|
|
"breakpad/src/client/mac/crash_generation/InspectorMain.mm",
|
|
]
|
|
|
|
# TODO(GYP): 'mac_real_dsym': 1,
|
|
|
|
include_dirs = [
|
|
"breakpad/src/client/apple/Framework",
|
|
"breakpad/src/common/mac",
|
|
"breakpad/src",
|
|
]
|
|
libs = [
|
|
"CoreServices.framework",
|
|
"Foundation.framework",
|
|
]
|
|
|
|
deps = [
|
|
":utilities",
|
|
]
|
|
}
|
|
|
|
# TODO(GYP) this target has some mac_bundle_resources stuff.
|
|
# executable("crash_report_sender") {
|
|
# }
|
|
group("crash_report_sender") {
|
|
}
|
|
|
|
config("breakpad_config") {
|
|
include_dirs = [ "breakpad/src/client/apple/Framework" ]
|
|
}
|
|
|
|
static_library("breakpad") {
|
|
sources = [
|
|
"breakpad/src/client/mac/Framework/Breakpad.mm",
|
|
"breakpad/src/client/mac/Framework/OnDemandServer.mm",
|
|
"breakpad/src/client/mac/crash_generation/crash_generation_client.cc",
|
|
"breakpad/src/client/mac/crash_generation/crash_generation_client.h",
|
|
"breakpad/src/client/mac/handler/exception_handler.cc",
|
|
"breakpad/src/client/mac/handler/protected_memory_allocator.cc",
|
|
]
|
|
|
|
configs += [ ":internal_config" ]
|
|
public_configs = [ ":breakpad_config" ]
|
|
|
|
defines = [ "USE_PROTECTED_ALLOCATIONS=1" ]
|
|
include_dirs = [ "breakpad/src/client/apple/Framework" ]
|
|
|
|
deps = [
|
|
":crash_inspector",
|
|
":crash_report_sender",
|
|
":utilities",
|
|
]
|
|
}
|
|
|
|
group("client") {
|
|
public_configs = [ ":client_config" ]
|
|
}
|
|
}
|
|
|
|
if (is_linux || is_android) {
|
|
if (current_toolchain == host_toolchain) {
|
|
executable("symupload") {
|
|
sources = [
|
|
"breakpad/src/common/linux/http_upload.cc",
|
|
"breakpad/src/common/linux/http_upload.h",
|
|
"breakpad/src/common/linux/symbol_upload.cc",
|
|
"breakpad/src/common/linux/symbol_upload.h",
|
|
"breakpad/src/tools/linux/symupload/sym_upload.cc",
|
|
]
|
|
|
|
include_dirs = [
|
|
"breakpad/src",
|
|
"breakpad/src/third_party",
|
|
]
|
|
|
|
configs += [ ":tools_config" ]
|
|
|
|
libs = [ "dl" ]
|
|
}
|
|
|
|
# dump_syms is a host tool, so only compile it for the host system.
|
|
executable("dump_syms") {
|
|
sources = [
|
|
"breakpad/src/common/dwarf/bytereader.cc",
|
|
"breakpad/src/common/dwarf/dwarf2diehandler.cc",
|
|
"breakpad/src/common/dwarf/dwarf2reader.cc",
|
|
"breakpad/src/common/dwarf/elf_reader.cc",
|
|
"breakpad/src/common/dwarf/elf_reader.h",
|
|
"breakpad/src/common/dwarf_cfi_to_module.cc",
|
|
"breakpad/src/common/dwarf_cfi_to_module.h",
|
|
"breakpad/src/common/dwarf_cu_to_module.cc",
|
|
"breakpad/src/common/dwarf_cu_to_module.h",
|
|
"breakpad/src/common/dwarf_line_to_module.cc",
|
|
"breakpad/src/common/dwarf_line_to_module.h",
|
|
"breakpad/src/common/language.cc",
|
|
"breakpad/src/common/language.h",
|
|
"breakpad/src/common/linux/crc32.cc",
|
|
"breakpad/src/common/linux/crc32.h",
|
|
"breakpad/src/common/linux/dump_symbols.cc",
|
|
"breakpad/src/common/linux/dump_symbols.h",
|
|
"breakpad/src/common/linux/elf_symbols_to_module.cc",
|
|
"breakpad/src/common/linux/elf_symbols_to_module.h",
|
|
"breakpad/src/common/linux/elfutils.cc",
|
|
"breakpad/src/common/linux/elfutils.h",
|
|
"breakpad/src/common/linux/file_id.cc",
|
|
"breakpad/src/common/linux/file_id.h",
|
|
"breakpad/src/common/linux/guid_creator.h",
|
|
"breakpad/src/common/linux/linux_libc_support.cc",
|
|
"breakpad/src/common/linux/linux_libc_support.h",
|
|
"breakpad/src/common/linux/memory_mapped_file.cc",
|
|
"breakpad/src/common/linux/memory_mapped_file.h",
|
|
"breakpad/src/common/module.cc",
|
|
"breakpad/src/common/module.h",
|
|
"breakpad/src/common/path_helper.cc",
|
|
"breakpad/src/common/path_helper.h",
|
|
"breakpad/src/common/stabs_reader.cc",
|
|
"breakpad/src/common/stabs_reader.h",
|
|
"breakpad/src/common/stabs_to_module.cc",
|
|
"breakpad/src/common/stabs_to_module.h",
|
|
"breakpad/src/tools/linux/dump_syms/dump_syms.cc",
|
|
]
|
|
|
|
# There are some warnings in this code.
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
|
|
# dwarf2reader.cc uses dynamic_cast. Because we don't typically
|
|
# don't support RTTI, we enable it for this single target. Since
|
|
# dump_syms doesn't share any object files with anything else,
|
|
# this doesn't end up polluting Chrome itself.
|
|
configs -= [ "//build/config/compiler:no_rtti" ]
|
|
configs += [ "//build/config/compiler:rtti" ]
|
|
|
|
# Breakpad rev 583 introduced this flag.
|
|
# Using this define, stabs_reader.h will include a.out.h to
|
|
# build on Linux.
|
|
defines = [ "HAVE_A_OUT_H" ]
|
|
|
|
include_dirs = [ "breakpad/src" ]
|
|
}
|
|
} else {
|
|
# Aliases for convenience.
|
|
binary_symlink("dump_syms") {
|
|
binary_label = ":dump_syms($host_toolchain)"
|
|
}
|
|
binary_symlink("symupload") {
|
|
binary_label = ":symupload($host_toolchain)"
|
|
}
|
|
}
|
|
|
|
static_library("client") {
|
|
# Want all these sources for both Linux and Android.
|
|
set_sources_assignment_filter([])
|
|
sources = [
|
|
"breakpad/src/client/linux/crash_generation/crash_generation_client.cc",
|
|
"breakpad/src/client/linux/crash_generation/crash_generation_client.h",
|
|
"breakpad/src/client/linux/dump_writer_common/mapping_info.h",
|
|
"breakpad/src/client/linux/dump_writer_common/thread_info.cc",
|
|
"breakpad/src/client/linux/dump_writer_common/thread_info.h",
|
|
"breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc",
|
|
"breakpad/src/client/linux/dump_writer_common/ucontext_reader.h",
|
|
"breakpad/src/client/linux/handler/exception_handler.cc",
|
|
"breakpad/src/client/linux/handler/exception_handler.h",
|
|
"breakpad/src/client/linux/handler/minidump_descriptor.cc",
|
|
"breakpad/src/client/linux/handler/minidump_descriptor.h",
|
|
"breakpad/src/client/linux/log/log.cc",
|
|
"breakpad/src/client/linux/log/log.h",
|
|
"breakpad/src/client/linux/microdump_writer/microdump_writer.cc",
|
|
"breakpad/src/client/linux/microdump_writer/microdump_writer.h",
|
|
"breakpad/src/client/linux/minidump_writer/cpu_set.h",
|
|
"breakpad/src/client/linux/minidump_writer/directory_reader.h",
|
|
"breakpad/src/client/linux/minidump_writer/line_reader.h",
|
|
"breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc",
|
|
"breakpad/src/client/linux/minidump_writer/linux_core_dumper.h",
|
|
"breakpad/src/client/linux/minidump_writer/linux_dumper.cc",
|
|
"breakpad/src/client/linux/minidump_writer/linux_dumper.h",
|
|
"breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.cc",
|
|
"breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.h",
|
|
"breakpad/src/client/linux/minidump_writer/minidump_writer.cc",
|
|
"breakpad/src/client/linux/minidump_writer/minidump_writer.h",
|
|
"breakpad/src/client/linux/minidump_writer/proc_cpuinfo_reader.h",
|
|
"breakpad/src/client/minidump_file_writer-inl.h",
|
|
"breakpad/src/client/minidump_file_writer.cc",
|
|
"breakpad/src/client/minidump_file_writer.h",
|
|
"breakpad/src/common/convert_UTF.c",
|
|
"breakpad/src/common/convert_UTF.h",
|
|
"breakpad/src/common/linux/elf_core_dump.cc",
|
|
"breakpad/src/common/linux/elf_core_dump.h",
|
|
"breakpad/src/common/linux/elfutils.cc",
|
|
"breakpad/src/common/linux/elfutils.h",
|
|
"breakpad/src/common/linux/file_id.cc",
|
|
"breakpad/src/common/linux/file_id.h",
|
|
"breakpad/src/common/linux/google_crashdump_uploader.cc",
|
|
"breakpad/src/common/linux/google_crashdump_uploader.h",
|
|
"breakpad/src/common/linux/guid_creator.cc",
|
|
"breakpad/src/common/linux/guid_creator.h",
|
|
"breakpad/src/common/linux/libcurl_wrapper.cc",
|
|
"breakpad/src/common/linux/libcurl_wrapper.h",
|
|
"breakpad/src/common/linux/linux_libc_support.cc",
|
|
"breakpad/src/common/linux/linux_libc_support.h",
|
|
"breakpad/src/common/linux/memory_mapped_file.cc",
|
|
"breakpad/src/common/linux/memory_mapped_file.h",
|
|
"breakpad/src/common/linux/safe_readlink.cc",
|
|
"breakpad/src/common/linux/safe_readlink.h",
|
|
"breakpad/src/common/memory_allocator.h",
|
|
"breakpad/src/common/simple_string_dictionary.cc",
|
|
"breakpad/src/common/simple_string_dictionary.h",
|
|
"breakpad/src/common/string_conversion.cc",
|
|
"breakpad/src/common/string_conversion.h",
|
|
]
|
|
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
public_configs = [ ":client_config" ]
|
|
|
|
if (current_cpu == "arm" && is_chromeos) {
|
|
# Avoid running out of registers in
|
|
# linux_syscall_support.h:sys_clone()'s inline assembly.
|
|
cflags = [ "-marm" ]
|
|
}
|
|
|
|
if (is_android) {
|
|
sources += [ "breakpad/src/common/android/breakpad_getcontext.S" ]
|
|
}
|
|
|
|
libs = [ "dl" ]
|
|
|
|
include_dirs = [
|
|
".",
|
|
"breakpad/src",
|
|
"breakpad/src/client",
|
|
"breakpad/src/third_party/linux/include",
|
|
]
|
|
}
|
|
|
|
static_library("processor_support") {
|
|
set_sources_assignment_filter([])
|
|
sources = [
|
|
"breakpad/src/common/scoped_ptr.h",
|
|
"breakpad/src/processor/basic_code_modules.cc",
|
|
"breakpad/src/processor/basic_code_modules.h",
|
|
"breakpad/src/processor/dump_context.cc",
|
|
"breakpad/src/processor/dump_object.cc",
|
|
"breakpad/src/processor/logging.cc",
|
|
"breakpad/src/processor/logging.h",
|
|
"breakpad/src/processor/minidump.cc",
|
|
"breakpad/src/processor/pathname_stripper.cc",
|
|
"breakpad/src/processor/pathname_stripper.h",
|
|
"breakpad/src/processor/proc_maps_linux.cc",
|
|
]
|
|
|
|
include_dirs = [
|
|
"breakpad/src",
|
|
"breakpad/src/client",
|
|
"breakpad/src/third_party/linux/include",
|
|
".",
|
|
]
|
|
|
|
# There are some warnings in this code.
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
}
|
|
|
|
test("breakpad_unittests") {
|
|
set_sources_assignment_filter([])
|
|
sources = [
|
|
"breakpad/src/client/linux/handler/exception_handler_unittest.cc",
|
|
"breakpad/src/client/linux/minidump_writer/cpu_set_unittest.cc",
|
|
"breakpad/src/client/linux/minidump_writer/directory_reader_unittest.cc",
|
|
"breakpad/src/client/linux/minidump_writer/line_reader_unittest.cc",
|
|
"breakpad/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc",
|
|
"breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc",
|
|
"breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc",
|
|
"breakpad/src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc",
|
|
"breakpad/src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc",
|
|
"breakpad/src/common/linux/elf_core_dump_unittest.cc",
|
|
"breakpad/src/common/linux/file_id_unittest.cc",
|
|
"breakpad/src/common/linux/linux_libc_support_unittest.cc",
|
|
"breakpad/src/common/linux/synth_elf.cc",
|
|
"breakpad/src/common/linux/tests/auto_testfile.h",
|
|
"breakpad/src/common/linux/tests/crash_generator.cc",
|
|
"breakpad/src/common/linux/tests/crash_generator.h",
|
|
"breakpad/src/common/memory_allocator_unittest.cc",
|
|
"breakpad/src/common/memory_range.h",
|
|
"breakpad/src/common/simple_string_dictionary_unittest.cc",
|
|
"breakpad/src/common/test_assembler.cc",
|
|
"breakpad/src/common/tests/file_utils.cc",
|
|
"breakpad/src/common/tests/file_utils.h",
|
|
"breakpad/src/tools/linux/md2core/minidump_memory_range.h",
|
|
"breakpad/src/tools/linux/md2core/minidump_memory_range_unittest.cc",
|
|
"linux/breakpad_googletest_includes.h",
|
|
]
|
|
|
|
deps = [
|
|
":client",
|
|
":processor_support",
|
|
"//testing/gmock",
|
|
"//testing/gtest",
|
|
"//testing/gtest:gtest_main",
|
|
]
|
|
|
|
data_deps = [
|
|
":linux_dumper_unittest_helper",
|
|
]
|
|
|
|
include_dirs = [
|
|
"linux", # Use our copy of breakpad_googletest_includes.h
|
|
".",
|
|
]
|
|
|
|
# There are some warnings in this code.
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [
|
|
":client_config",
|
|
"//build/config/compiler:no_chromium_code",
|
|
]
|
|
|
|
if (is_clang) {
|
|
# See https://crbug.com/138571#c18
|
|
cflags = [ "-Wno-unused-value" ]
|
|
}
|
|
|
|
if (is_android) {
|
|
use_raw_android_executable = true
|
|
sources +=
|
|
[ "breakpad/src/common/android/breakpad_getcontext_unittest.cc" ]
|
|
libs = [ "log" ]
|
|
extra_dist_files = [ "$root_out_dir/linux_dumper_unittest_helper" ]
|
|
}
|
|
|
|
# Add the breakpad unittest config at the end to override all configs.
|
|
configs += [ ":breakpad_unittest_config" ]
|
|
}
|
|
|
|
executable("linux_dumper_unittest_helper") {
|
|
set_sources_assignment_filter([])
|
|
testonly = true
|
|
sources = [
|
|
"breakpad/src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc",
|
|
]
|
|
deps = [
|
|
":processor_support",
|
|
]
|
|
|
|
configs += [ ":client_config" ]
|
|
|
|
if (is_component_build) {
|
|
ldflags = [ "-Wl,-rpath,\$ORIGIN" ]
|
|
}
|
|
}
|
|
|
|
executable("generate_test_dump") {
|
|
set_sources_assignment_filter([])
|
|
testonly = true
|
|
sources = [
|
|
"linux/generate-test-dump.cc",
|
|
]
|
|
|
|
# This file has an unused variable warning.
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [
|
|
":client_config",
|
|
"//build/config/compiler:no_chromium_code",
|
|
]
|
|
|
|
deps = [
|
|
":client",
|
|
]
|
|
|
|
if (is_android) {
|
|
libs = [ "log" ]
|
|
}
|
|
}
|
|
|
|
executable("minidump-2-core") {
|
|
set_sources_assignment_filter([])
|
|
sources = [
|
|
"breakpad/src/common/path_helper.cc",
|
|
"breakpad/src/common/path_helper.h",
|
|
"breakpad/src/tools/linux/md2core/minidump-2-core.cc",
|
|
]
|
|
|
|
include_dirs = [ "breakpad/src" ]
|
|
|
|
deps = [
|
|
":client",
|
|
]
|
|
}
|
|
|
|
executable("core-2-minidump") {
|
|
set_sources_assignment_filter([])
|
|
sources = [
|
|
"breakpad/src/tools/linux/core2md/core2md.cc",
|
|
]
|
|
|
|
deps = [
|
|
":client",
|
|
]
|
|
|
|
include_dirs = [ "breakpad/src" ]
|
|
}
|
|
}
|
|
|
|
if (is_win) {
|
|
executable("dump_syms") {
|
|
# TODO(scottmg) using this with VS2015 may break the crash server.
|
|
# https://crbug.com/696671
|
|
include_dirs = [
|
|
"$visual_studio_path/DIA SDK/include",
|
|
"breakpad/src",
|
|
]
|
|
|
|
sources = [
|
|
"breakpad/src/common/windows/dia_util.cc",
|
|
"breakpad/src/common/windows/dia_util.h",
|
|
"breakpad/src/common/windows/guid_string.cc",
|
|
"breakpad/src/common/windows/guid_string.h",
|
|
"breakpad/src/common/windows/omap.cc",
|
|
"breakpad/src/common/windows/omap.h",
|
|
"breakpad/src/common/windows/pdb_source_line_writer.cc",
|
|
"breakpad/src/common/windows/pdb_source_line_writer.h",
|
|
"breakpad/src/common/windows/string_utils-inl.h",
|
|
"breakpad/src/common/windows/string_utils.cc",
|
|
"breakpad/src/tools/windows/dump_syms/dump_syms.cc",
|
|
]
|
|
|
|
lib_dirs = []
|
|
if (target_cpu == "x64") {
|
|
lib_dirs += [ "$visual_studio_path/DIA SDK/lib/amd64" ]
|
|
} else {
|
|
lib_dirs += [ "$visual_studio_path/DIA SDK/lib" ]
|
|
}
|
|
|
|
libs = [
|
|
"diaguids.lib",
|
|
"imagehlp.lib",
|
|
]
|
|
if (is_clang) {
|
|
# clang complains about microsoft-specific goto extensions. Instead of
|
|
# rewriting decade-old, goto-ridden code, disable the warning.
|
|
cflags = [ "-Wno-microsoft-goto" ]
|
|
}
|
|
}
|
|
}
|
|
|
|
if (is_ios) {
|
|
static_library("client") {
|
|
set_sources_assignment_filter([])
|
|
sources = [
|
|
"breakpad/src/client/ios/Breakpad.h",
|
|
"breakpad/src/client/ios/Breakpad.mm",
|
|
"breakpad/src/client/ios/BreakpadController.h",
|
|
"breakpad/src/client/ios/BreakpadController.mm",
|
|
"breakpad/src/client/ios/handler/ios_exception_minidump_generator.h",
|
|
"breakpad/src/client/ios/handler/ios_exception_minidump_generator.mm",
|
|
"breakpad/src/client/mac/crash_generation/ConfigFile.h",
|
|
"breakpad/src/client/mac/crash_generation/ConfigFile.mm",
|
|
"breakpad/src/client/mac/handler/breakpad_nlist_64.cc",
|
|
"breakpad/src/client/mac/handler/breakpad_nlist_64.h",
|
|
"breakpad/src/client/mac/handler/dynamic_images.cc",
|
|
"breakpad/src/client/mac/handler/dynamic_images.h",
|
|
"breakpad/src/client/mac/handler/exception_handler.cc",
|
|
"breakpad/src/client/mac/handler/exception_handler.h",
|
|
"breakpad/src/client/mac/handler/minidump_generator.cc",
|
|
"breakpad/src/client/mac/handler/minidump_generator.h",
|
|
"breakpad/src/client/mac/handler/protected_memory_allocator.cc",
|
|
"breakpad/src/client/mac/handler/protected_memory_allocator.h",
|
|
"breakpad/src/client/mac/sender/uploader.h",
|
|
"breakpad/src/client/mac/sender/uploader.mm",
|
|
"breakpad/src/client/minidump_file_writer-inl.h",
|
|
"breakpad/src/client/minidump_file_writer.cc",
|
|
"breakpad/src/client/minidump_file_writer.h",
|
|
"breakpad/src/common/convert_UTF.c",
|
|
"breakpad/src/common/convert_UTF.h",
|
|
"breakpad/src/common/long_string_dictionary.cc",
|
|
"breakpad/src/common/mac/HTTPMultipartUpload.m",
|
|
"breakpad/src/common/mac/file_id.cc",
|
|
"breakpad/src/common/mac/file_id.h",
|
|
"breakpad/src/common/mac/macho_id.cc",
|
|
"breakpad/src/common/mac/macho_id.h",
|
|
"breakpad/src/common/mac/macho_utilities.cc",
|
|
"breakpad/src/common/mac/macho_utilities.h",
|
|
"breakpad/src/common/mac/macho_walker.cc",
|
|
"breakpad/src/common/mac/macho_walker.h",
|
|
"breakpad/src/common/mac/string_utilities.cc",
|
|
"breakpad/src/common/mac/string_utilities.h",
|
|
"breakpad/src/common/md5.cc",
|
|
"breakpad/src/common/md5.h",
|
|
"breakpad/src/common/simple_string_dictionary.cc",
|
|
"breakpad/src/common/simple_string_dictionary.h",
|
|
"breakpad/src/common/string_conversion.cc",
|
|
"breakpad/src/common/string_conversion.h",
|
|
"breakpad/src/google_breakpad/common/minidump_format.h",
|
|
]
|
|
set_sources_assignment_filter(sources_assignment_filter)
|
|
|
|
include_dirs = [
|
|
"breakpad/src",
|
|
"breakpad/src/client/mac/Framework",
|
|
"breakpad/src/common/mac",
|
|
]
|
|
|
|
deps = [
|
|
"//third_party/google_toolbox_for_mac",
|
|
]
|
|
|
|
public_configs = [ ":client_config" ]
|
|
|
|
if (is_clang) {
|
|
# See https://crbug.com/google-breakpad/675.
|
|
cflags = [ "-Wno-deprecated-declarations" ]
|
|
}
|
|
}
|
|
}
|
|
|
|
if (is_win) {
|
|
group("client") {
|
|
public_configs = [ ":client_config" ]
|
|
}
|
|
|
|
config("breakpad_handler_warnings") {
|
|
if (is_clang) {
|
|
# See https://crbug.com/google-breakpad/658.
|
|
cflags = [ "-Wno-reorder" ]
|
|
}
|
|
}
|
|
|
|
static_library("breakpad_handler") {
|
|
configs += [ ":handler_config" ]
|
|
if (is_win) {
|
|
public_configs = [ ":handler_config" ]
|
|
}
|
|
|
|
defines = [ "BREAKPAD_NO_TERMINATE_THREAD" ]
|
|
|
|
sources = [
|
|
"breakpad/src/client/windows/crash_generation/client_info.cc",
|
|
"breakpad/src/client/windows/crash_generation/client_info.h",
|
|
"breakpad/src/client/windows/crash_generation/crash_generation_client.cc",
|
|
"breakpad/src/client/windows/crash_generation/crash_generation_client.h",
|
|
"breakpad/src/client/windows/crash_generation/crash_generation_server.cc",
|
|
"breakpad/src/client/windows/crash_generation/crash_generation_server.h",
|
|
"breakpad/src/client/windows/crash_generation/minidump_generator.cc",
|
|
"breakpad/src/client/windows/crash_generation/minidump_generator.h",
|
|
"breakpad/src/client/windows/handler/exception_handler.cc",
|
|
"breakpad/src/client/windows/handler/exception_handler.h",
|
|
"breakpad/src/common/windows/guid_string.cc",
|
|
"breakpad/src/common/windows/guid_string.h",
|
|
"breakpad/src/common/windows/string_utils-inl.h",
|
|
"breakpad/src/google_breakpad/common/minidump_format.h",
|
|
]
|
|
configs += [ ":breakpad_handler_warnings" ]
|
|
}
|
|
|
|
source_set("breakpad_sender") {
|
|
sources = [
|
|
"breakpad/src/client/windows/sender/crash_report_sender.cc",
|
|
"breakpad/src/client/windows/sender/crash_report_sender.h",
|
|
"breakpad/src/common/windows/http_upload.cc",
|
|
"breakpad/src/common/windows/http_upload.h",
|
|
]
|
|
configs += [ ":sender_config" ]
|
|
public_configs = [ ":sender_config" ]
|
|
}
|
|
}
|