0

Use the authoritative upstream source for Breakpad, move to third_party

Breakpad was being synced from a read-only mirror of a subdirectory
rather than the authoritative upstream source. This encouraged Chrome
developers to send patches against the read-only mirror. Those patches
couldn’t be committed and needed to be duplicated in the correct
repository. Once, a patch against the read-only mirror accidentally was
committed, and it broke mirroring.

This odd setup existed from the time of the git migration. Prior to
that, Breakpad was hosted in Subversion, and Chrome incidentally pulled
Breakpad’s src subdirectory rather than the entire trunk directory.
Because it wasn‘t easy to do the same thing with git, the read-only
mirror of src was created to avoid having to change lots of paths in
Chrome. But now I’m changing the paths.

This also moves Breakpad from the top-level breakpad directory in Chrome
to third_party/breakpad. It should have been there all along, but
Breakpad was one of the earliest dependencies added to Chrome, and at
that time, there was no firm policy on where to put Google-originated
external code.

Bug: 766917
TBR: pinkerton@chromium.org
Change-Id: I860a3e92b0327898ba73b8678af258a9020eeaaf
Reviewed-on: https://chromium-review.googlesource.com/677280
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Cr-Commit-Position: refs/heads/master@{#503925}
This commit is contained in:
Mark Mentovai
2017-09-23 01:32:26 +00:00
committed by Commit Bot
parent a2aa7d8ff1
commit 5b41612edd
80 changed files with 1169 additions and 1162 deletions
.gitignore.gnBUILD.gnDEPSPRESUBMIT.py
base
breakpad
chrome
chrome_elf
chromecast
components
content/shell
docs
ios
native_client_sdk/src
remoting
testing/buildbot
third_party
tools
checklicenses
msan
perf
chrome_telemetry_build

1
.gitignore vendored

@ -61,7 +61,6 @@ vs-chromium-project.txt
/android_emulator_sdk
/ash/ash_unittests_run.xml
/base/base_unittests_run.xml
/breakpad/src/
# See build/.gitignore for entries covering src/build.
/buildtools
# The Chrome OS build creates a /c symlink due to http://crbug.com/54866.

2
.gn

@ -64,7 +64,6 @@ check_targets = [
"//ash/*",
"//base/*",
"//blink/*",
"//breakpad/*",
"//build/*",
"//cc/*",
@ -135,6 +134,7 @@ check_targets = [
"//testing/*",
#"//third_party/*", # May not ever want this.
"//third_party/breakpad/*",
"//third_party/brotli/*",
"//third_party/hunspell/*",
"//third_party/leveldatabase/*",

@ -364,10 +364,10 @@ group("gn_all") {
if (is_linux || is_android) {
deps += [
"//breakpad:breakpad_unittests",
"//breakpad:core-2-minidump",
"//breakpad:generate_test_dump",
"//breakpad:minidump-2-core",
"//third_party/breakpad:breakpad_unittests",
"//third_party/breakpad:core-2-minidump",
"//third_party/breakpad:generate_test_dump",
"//third_party/breakpad:minidump-2-core",
]
}
@ -508,16 +508,16 @@ group("gn_all") {
if (is_android || (is_linux && !is_chromeos)) {
deps += [
"//breakpad:dump_syms($host_toolchain)",
"//breakpad:microdump_stackwalk($host_toolchain)",
"//breakpad:minidump_dump($host_toolchain)",
"//breakpad:minidump_stackwalk($host_toolchain)",
"//components/network_hints/browser",
"//content/public/app:browser",
"//content/public/app:child",
"//mojo/edk/test:mojo_public_system_perftests",
"//services/service_manager/public/cpp",
"//testing/gmock:gmock_main",
"//third_party/breakpad:dump_syms($host_toolchain)",
"//third_party/breakpad:microdump_stackwalk($host_toolchain)",
"//third_party/breakpad:minidump_dump($host_toolchain)",
"//third_party/breakpad:minidump_stackwalk($host_toolchain)",
]
if (!is_android) {
@ -547,9 +547,9 @@ group("gn_all") {
if (is_mac) {
deps += [
"//breakpad:crash_inspector",
"//breakpad:dump_syms",
"//third_party/apple_sample_code",
"//third_party/breakpad:crash_inspector",
"//third_party/breakpad:dump_syms",
"//third_party/molokocacao",
]
deps -= [
@ -585,7 +585,7 @@ group("gn_all") {
[ "//chrome/installer/mini_installer:next_version_mini_installer" ]
}
} else if (!is_android && !is_ios && !is_fuchsia) {
deps += [ "//breakpad:symupload($host_toolchain)" ]
deps += [ "//third_party/breakpad:symupload($host_toolchain)" ]
}
if (is_chromecast) {
@ -813,13 +813,13 @@ if (is_chromeos) {
group("chromiumos_preflight") {
testonly = true
deps = [
"//breakpad:minidump_stackwalk($host_toolchain)",
"//chrome",
"//chrome/test/chromedriver",
"//media:media_unittests",
"//ppapi/examples/video_decode",
"//sandbox/linux:chrome_sandbox",
"//sandbox/linux:sandbox_linux_unittests",
"//third_party/breakpad:minidump_stackwalk($host_toolchain)",
# Blocked on https://github.com/catapult-project/catapult/issues/2297
#"//third_party/catapult/telemetry:bitmaptools",
@ -913,12 +913,12 @@ if (!is_ios && !is_fuchsia) {
if (is_android) {
data_deps += [
"//breakpad:breakpad_unittests",
"//breakpad:dump_syms",
"//breakpad:microdump_stackwalk",
"//breakpad:minidump_dump",
"//breakpad:minidump_stackwalk",
"//breakpad:symupload",
"//third_party/breakpad:breakpad_unittests",
"//third_party/breakpad:dump_syms",
"//third_party/breakpad:microdump_stackwalk",
"//third_party/breakpad:minidump_dump",
"//third_party/breakpad:minidump_stackwalk",
"//third_party/breakpad:symupload",
"//tools/android/forwarder2",
]
}
@ -928,15 +928,16 @@ if (!is_ios && !is_fuchsia) {
}
if (!is_win && !is_android) {
data_deps += [ "//breakpad:minidump_stackwalk($host_toolchain)" ]
data_deps +=
[ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ]
}
if (is_mac) {
data_deps += [ "//breakpad:dump_syms($host_toolchain)" ]
data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
}
if (is_linux) {
data_deps += [ "//breakpad:dump_syms($host_toolchain)" ]
data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
}
data = [
@ -1054,7 +1055,8 @@ group("chromium_builder_perf") {
"//chrome/test:angle_perftests",
]
} else {
data_deps += [ "//breakpad:minidump_stackwalk($host_toolchain)" ]
data_deps +=
[ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ]
}
}
}

6
DEPS

@ -125,8 +125,8 @@ allowed_hosts = [
]
deps = {
'src/breakpad/src':
Var('chromium_git') + '/breakpad/breakpad/src.git' + '@' + '6b59fc07474c9338e7727c52a6d8a92010a105ad',
'src/third_party/breakpad/breakpad':
Var('chromium_git') + '/breakpad/breakpad.git' + '@' + '1c6d1613966eab5d77531e85f3b60c40124b43f0',
'src/buildtools':
Var('chromium_git') + '/chromium/buildtools.git' + '@' + Var('buildtools_revision'),
@ -532,11 +532,11 @@ include_rules = [
# checkdeps.py shouldn't check include paths for files in these dirs:
skip_child_includes = [
'breakpad',
'native_client_sdk',
'out',
'skia',
'testing',
'third_party/breakpad/breakpad',
'v8',
'win8',
]

@ -10,13 +10,13 @@ for more details about the presubmit API built into depot_tools.
_EXCLUDED_PATHS = (
r"^breakpad[\\\/].*",
r"^native_client_sdk[\\\/]src[\\\/]build_tools[\\\/]make_rules.py",
r"^native_client_sdk[\\\/]src[\\\/]build_tools[\\\/]make_simple.py",
r"^native_client_sdk[\\\/]src[\\\/]tools[\\\/].*.mk",
r"^net[\\\/]tools[\\\/]spdyshark[\\\/].*",
r"^skia[\\\/].*",
r"^third_party[\\\/](WebKit|blink)[\\\/].*",
r"^third_party[\\\/]breakpad[\\\/].*",
r"^v8[\\\/].*",
r".*MakeFile$",
r".+_autogen\.h$",

@ -106,7 +106,7 @@ bool InitializeSymbols() {
// we are using the Sym* functions. This is because breakpad does now
// share a lock with this function. See this related bug:
//
// http://code.google.com/p/google-breakpad/issues/detail?id=311
// https://crbug.com/google-breakpad/311
//
// This is a very unlikely edge case, and the current solution is to
// just ignore it.

@ -76,7 +76,7 @@ class PosixSpawnFileActions {
void RestoreDefaultExceptionHandler() {
// This function is tailored to remove the Breakpad exception handler.
// exception_mask matches s_exception_mask in
// breakpad/src/client/mac/handler/exception_handler.cc
// third_party/breakpad/breakpad/src/client/mac/handler/exception_handler.cc
const exception_mask_t exception_mask = EXC_MASK_BAD_ACCESS |
EXC_MASK_BAD_INSTRUCTION |
EXC_MASK_ARITHMETIC |

@ -1,993 +0,0 @@
# 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 = [
"src",
"src/third_party",
]
if (is_android) {
defines = [ "__ANDROID__" ]
}
if (is_clang) {
cflags = [ "-Wno-tautological-constant-out-of-range-compare" ]
}
}
config("internal_config") {
include_dirs = [ "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 = [ "src" ]
if (is_android) {
include_dirs += [ "src/common/android/include" ]
}
if (is_chromeos) {
defines = [ "__CHROMEOS__" ]
}
}
config("handler_config") {
include_dirs = [ "src" ]
}
config("sender_config") {
include_dirs = [ "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" ]
}
# {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 = [
"src/processor/basic_code_module.h",
"src/processor/basic_code_modules.cc",
"src/processor/basic_code_modules.h",
"src/processor/basic_source_line_resolver.cc",
"src/processor/call_stack.cc",
"src/processor/cfi_frame_info.cc",
"src/processor/cfi_frame_info.h",
"src/processor/disassembler_x86.cc",
"src/processor/disassembler_x86.h",
"src/processor/dump_context.cc",
"src/processor/dump_object.cc",
"src/processor/logging.cc",
"src/processor/logging.h",
"src/processor/pathname_stripper.cc",
"src/processor/pathname_stripper.h",
"src/processor/proc_maps_linux.cc",
"src/processor/process_state.cc",
"src/processor/simple_symbol_supplier.cc",
"src/processor/simple_symbol_supplier.h",
"src/processor/source_line_resolver_base.cc",
"src/processor/stack_frame_cpu.cc",
"src/processor/stack_frame_symbolizer.cc",
"src/processor/stackwalk_common.cc",
"src/processor/stackwalker.cc",
"src/processor/stackwalker_amd64.cc",
"src/processor/stackwalker_amd64.h",
"src/processor/stackwalker_arm.cc",
"src/processor/stackwalker_arm.h",
"src/processor/stackwalker_arm64.cc",
"src/processor/stackwalker_arm64.h",
"src/processor/stackwalker_mips.cc",
"src/processor/stackwalker_mips.h",
"src/processor/stackwalker_ppc.cc",
"src/processor/stackwalker_ppc.h",
"src/processor/stackwalker_ppc64.cc",
"src/processor/stackwalker_ppc64.h",
"src/processor/stackwalker_sparc.cc",
"src/processor/stackwalker_sparc.h",
"src/processor/stackwalker_x86.cc",
"src/processor/stackwalker_x86.h",
"src/processor/tokenize.cc",
"src/processor/tokenize.h",
# libdisasm
"src/third_party/libdisasm/ia32_implicit.c",
"src/third_party/libdisasm/ia32_implicit.h",
"src/third_party/libdisasm/ia32_insn.c",
"src/third_party/libdisasm/ia32_insn.h",
"src/third_party/libdisasm/ia32_invariant.c",
"src/third_party/libdisasm/ia32_invariant.h",
"src/third_party/libdisasm/ia32_modrm.c",
"src/third_party/libdisasm/ia32_modrm.h",
"src/third_party/libdisasm/ia32_opcode_tables.c",
"src/third_party/libdisasm/ia32_opcode_tables.h",
"src/third_party/libdisasm/ia32_operand.c",
"src/third_party/libdisasm/ia32_operand.h",
"src/third_party/libdisasm/ia32_reg.c",
"src/third_party/libdisasm/ia32_reg.h",
"src/third_party/libdisasm/ia32_settings.c",
"src/third_party/libdisasm/ia32_settings.h",
"src/third_party/libdisasm/libdis.h",
"src/third_party/libdisasm/qword.h",
"src/third_party/libdisasm/x86_disasm.c",
"src/third_party/libdisasm/x86_format.c",
"src/third_party/libdisasm/x86_imm.c",
"src/third_party/libdisasm/x86_imm.h",
"src/third_party/libdisasm/x86_insn.c",
"src/third_party/libdisasm/x86_misc.c",
"src/third_party/libdisasm/x86_operand_list.c",
"src/third_party/libdisasm/x86_operand_list.h",
]
defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
configs += [ ":tools_config" ]
}
fuzzer_test("minidump_fuzzer") {
sources = [
"minidump_fuzzer.cc",
"src/processor/exploitability.cc",
"src/processor/minidump.cc",
"src/processor/minidump_processor.cc",
]
deps = [
":stackwalk_common",
"//base",
]
defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ]
include_dirs = [ "src" ]
dict = "minidump_fuzzer.dict"
libfuzzer_options = [
"close_fd_mask=3",
"max_len=128000",
]
# Always want these files included regardless of platform.
set_sources_assignment_filter([])
sources += [
"src/processor/exploitability_linux.cc",
"src/processor/exploitability_linux.h",
"src/processor/exploitability_win.cc",
"src/processor/exploitability_win.h",
"src/processor/symbolic_constants_win.cc",
"src/processor/symbolic_constants_win.h",
]
}
executable("microdump_stackwalk") {
sources = [
"src/processor/microdump.cc",
"src/processor/microdump_processor.cc",
"src/processor/microdump_stackwalk.cc",
]
deps = [
":stackwalk_common",
"//build/config:exe_and_shlib_deps",
]
defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
configs += [ ":tools_config" ]
}
executable("minidump_stackwalk") {
sources = [
"src/processor/exploitability.cc",
"src/processor/minidump.cc",
"src/processor/minidump_processor.cc",
"src/processor/minidump_stackwalk.cc",
]
deps = [
":stackwalk_common",
"//build/config:exe_and_shlib_deps",
]
defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
configs += [ ":tools_config" ]
# Always want these files included regardless of platform.
set_sources_assignment_filter([])
sources += [
"src/processor/exploitability_linux.cc",
"src/processor/exploitability_linux.h",
"src/processor/exploitability_win.cc",
"src/processor/exploitability_win.h",
"src/processor/symbolic_constants_win.cc",
"src/processor/symbolic_constants_win.h",
]
}
executable("minidump_dump") {
set_sources_assignment_filter([])
sources = [
"src/processor/basic_code_module.h",
"src/processor/basic_code_modules.cc",
"src/processor/basic_code_modules.h",
"src/processor/dump_context.cc",
"src/processor/dump_object.cc",
"src/processor/logging.cc",
"src/processor/logging.h",
"src/processor/minidump.cc",
"src/processor/minidump_dump.cc",
"src/processor/pathname_stripper.cc",
"src/processor/pathname_stripper.h",
"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" ]
deps = [
"//build/config:exe_and_shlib_deps",
]
}
} 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) {
# TODO(GYP) This should be only 64-bit on Mac. From .gypi:
# Like ld, dump_syms needs to operate on enough data that it may
# actually need to be able to address more than 4GB. Use x86_64.
# Don't worry! An x86_64 dump_syms is perfectly able to dump
# 32-bit files.
executable("dump_syms") {
sources = [
"src/common/dwarf/bytereader.cc",
"src/common/dwarf/dwarf2diehandler.cc",
"src/common/dwarf/dwarf2reader.cc",
"src/common/dwarf/elf_reader.cc",
"src/common/dwarf/elf_reader.h",
"src/common/dwarf_cfi_to_module.cc",
"src/common/dwarf_cu_to_module.cc",
"src/common/dwarf_line_to_module.cc",
"src/common/language.cc",
"src/common/mac/arch_utilities.cc",
"src/common/mac/arch_utilities.h",
"src/common/mac/dump_syms.cc",
"src/common/mac/file_id.cc",
"src/common/mac/macho_id.cc",
"src/common/mac/macho_reader.cc",
"src/common/mac/macho_utilities.cc",
"src/common/mac/macho_walker.cc",
"src/common/md5.cc",
"src/common/module.cc",
"src/common/stabs_reader.cc",
"src/common/stabs_to_module.cc",
"src/tools/mac/dump_syms/dump_syms_tool.cc",
]
# For src/common/stabs_reader.h.
defines = [ "HAVE_MACH_O_NLIST_H" ]
include_dirs = [ "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.
# http://code.google.com/p/google-breakpad/issues/detail?id=329
configs -= [ "//build/config/compiler:default_optimization" ]
cflags += [ "-O0" ]
}
deps = [
"//build/config:exe_and_shlib_deps",
]
}
executable("symupload") {
sources = [
"src/common/mac/HTTPMultipartUpload.m",
"src/tools/mac/symupload/symupload.m",
]
include_dirs = [ "src/common/mac" ]
libs = [ "Foundation.framework" ]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
deps = [
"//build/config:exe_and_shlib_deps",
]
}
} 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 = [
"src/client/mac/crash_generation/ConfigFile.mm",
"src/client/mac/handler/breakpad_nlist_64.cc",
"src/client/mac/handler/dynamic_images.cc",
"src/client/mac/handler/minidump_generator.cc",
"src/client/minidump_file_writer.cc",
"src/common/convert_UTF.c",
"src/common/mac/MachIPC.mm",
"src/common/mac/arch_utilities.cc",
"src/common/mac/bootstrap_compat.cc",
"src/common/mac/file_id.cc",
"src/common/mac/launch_reporter.cc",
"src/common/mac/macho_id.cc",
"src/common/mac/macho_utilities.cc",
"src/common/mac/macho_walker.cc",
"src/common/mac/string_utilities.cc",
"src/common/md5.cc",
"src/common/simple_string_dictionary.cc",
"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 = [
"src/client/mac/crash_generation/Inspector.mm",
"src/client/mac/crash_generation/InspectorMain.mm",
]
# TODO(GYP): 'mac_real_dsym': 1,
include_dirs = [
"src/client/apple/Framework",
"src/common/mac",
"src",
]
libs = [
"CoreServices.framework",
"Foundation.framework",
]
deps = [
":utilities",
"//build/config:exe_and_shlib_deps",
]
}
# TODO(GYP) this target has some mac_bundle_resources stuff.
# executable("crash_report_sender") {
# }
group("crash_report_sender") {
}
config("breakpad_config") {
include_dirs = [ "src/client/apple/Framework" ]
}
static_library("breakpad") {
sources = [
"src/client/mac/Framework/Breakpad.mm",
"src/client/mac/Framework/OnDemandServer.mm",
"src/client/mac/crash_generation/crash_generation_client.cc",
"src/client/mac/crash_generation/crash_generation_client.h",
"src/client/mac/handler/exception_handler.cc",
"src/client/mac/handler/protected_memory_allocator.cc",
]
configs += [ ":internal_config" ]
public_configs = [ ":breakpad_config" ]
defines = [ "USE_PROTECTED_ALLOCATIONS=1" ]
include_dirs = [ "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 = [
"src/common/linux/http_upload.cc",
"src/common/linux/http_upload.h",
"src/common/linux/symbol_upload.cc",
"src/common/linux/symbol_upload.h",
"src/tools/linux/symupload/sym_upload.cc",
]
include_dirs = [
"src",
"src/third_party",
]
configs += [ ":tools_config" ]
libs = [ "dl" ]
deps = [
"//build/config:exe_and_shlib_deps",
]
}
# dump_syms is a host tool, so only compile it for the host system.
executable("dump_syms") {
sources = [
"src/common/dwarf/bytereader.cc",
"src/common/dwarf/dwarf2diehandler.cc",
"src/common/dwarf/dwarf2reader.cc",
"src/common/dwarf/elf_reader.cc",
"src/common/dwarf/elf_reader.h",
"src/common/dwarf_cfi_to_module.cc",
"src/common/dwarf_cfi_to_module.h",
"src/common/dwarf_cu_to_module.cc",
"src/common/dwarf_cu_to_module.h",
"src/common/dwarf_line_to_module.cc",
"src/common/dwarf_line_to_module.h",
"src/common/language.cc",
"src/common/language.h",
"src/common/linux/crc32.cc",
"src/common/linux/crc32.h",
"src/common/linux/dump_symbols.cc",
"src/common/linux/dump_symbols.h",
"src/common/linux/elf_symbols_to_module.cc",
"src/common/linux/elf_symbols_to_module.h",
"src/common/linux/elfutils.cc",
"src/common/linux/elfutils.h",
"src/common/linux/file_id.cc",
"src/common/linux/file_id.h",
"src/common/linux/guid_creator.h",
"src/common/linux/linux_libc_support.cc",
"src/common/linux/linux_libc_support.h",
"src/common/linux/memory_mapped_file.cc",
"src/common/linux/memory_mapped_file.h",
"src/common/module.cc",
"src/common/module.h",
"src/common/stabs_reader.cc",
"src/common/stabs_reader.h",
"src/common/stabs_to_module.cc",
"src/common/stabs_to_module.h",
"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 = [ "src" ]
deps = [
"//build/config:exe_and_shlib_deps",
]
}
} 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 = [
"src/client/linux/crash_generation/crash_generation_client.cc",
"src/client/linux/crash_generation/crash_generation_client.h",
"src/client/linux/dump_writer_common/mapping_info.h",
"src/client/linux/dump_writer_common/thread_info.cc",
"src/client/linux/dump_writer_common/thread_info.h",
"src/client/linux/dump_writer_common/ucontext_reader.cc",
"src/client/linux/dump_writer_common/ucontext_reader.h",
"src/client/linux/handler/exception_handler.cc",
"src/client/linux/handler/exception_handler.h",
"src/client/linux/handler/minidump_descriptor.cc",
"src/client/linux/handler/minidump_descriptor.h",
"src/client/linux/log/log.cc",
"src/client/linux/log/log.h",
"src/client/linux/microdump_writer/microdump_writer.cc",
"src/client/linux/microdump_writer/microdump_writer.h",
"src/client/linux/minidump_writer/cpu_set.h",
"src/client/linux/minidump_writer/directory_reader.h",
"src/client/linux/minidump_writer/line_reader.h",
"src/client/linux/minidump_writer/linux_core_dumper.cc",
"src/client/linux/minidump_writer/linux_core_dumper.h",
"src/client/linux/minidump_writer/linux_dumper.cc",
"src/client/linux/minidump_writer/linux_dumper.h",
"src/client/linux/minidump_writer/linux_ptrace_dumper.cc",
"src/client/linux/minidump_writer/linux_ptrace_dumper.h",
"src/client/linux/minidump_writer/minidump_writer.cc",
"src/client/linux/minidump_writer/minidump_writer.h",
"src/client/linux/minidump_writer/proc_cpuinfo_reader.h",
"src/client/minidump_file_writer-inl.h",
"src/client/minidump_file_writer.cc",
"src/client/minidump_file_writer.h",
"src/common/convert_UTF.c",
"src/common/convert_UTF.h",
"src/common/linux/elf_core_dump.cc",
"src/common/linux/elf_core_dump.h",
"src/common/linux/elfutils.cc",
"src/common/linux/elfutils.h",
"src/common/linux/file_id.cc",
"src/common/linux/file_id.h",
"src/common/linux/google_crashdump_uploader.cc",
"src/common/linux/google_crashdump_uploader.h",
"src/common/linux/guid_creator.cc",
"src/common/linux/guid_creator.h",
"src/common/linux/libcurl_wrapper.cc",
"src/common/linux/libcurl_wrapper.h",
"src/common/linux/linux_libc_support.cc",
"src/common/linux/linux_libc_support.h",
"src/common/linux/memory_mapped_file.cc",
"src/common/linux/memory_mapped_file.h",
"src/common/linux/safe_readlink.cc",
"src/common/linux/safe_readlink.h",
"src/common/memory.h",
"src/common/simple_string_dictionary.cc",
"src/common/simple_string_dictionary.h",
"src/common/string_conversion.cc",
"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" ]
}
# Clang's -mstackrealign doesn't work well with
# linux_syscall_support.h hand written asm syscalls.
# See https://crbug.com/556393
configs -= [ "//build/config/compiler:clang_stackrealign" ]
if (is_android) {
sources += [ "src/common/android/breakpad_getcontext.S" ]
}
libs = [ "dl" ]
include_dirs = [
".",
"src",
"src/client",
"src/third_party/linux/include",
]
}
static_library("processor_support") {
set_sources_assignment_filter([])
sources = [
"src/common/scoped_ptr.h",
"src/processor/basic_code_modules.cc",
"src/processor/basic_code_modules.h",
"src/processor/dump_context.cc",
"src/processor/dump_object.cc",
"src/processor/logging.cc",
"src/processor/logging.h",
"src/processor/minidump.cc",
"src/processor/pathname_stripper.cc",
"src/processor/pathname_stripper.h",
"src/processor/proc_maps_linux.cc",
]
include_dirs = [
"src",
"src/client",
"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 = [
"linux/breakpad_googletest_includes.h",
"src/client/linux/handler/exception_handler_unittest.cc",
"src/client/linux/minidump_writer/cpu_set_unittest.cc",
"src/client/linux/minidump_writer/directory_reader_unittest.cc",
"src/client/linux/minidump_writer/line_reader_unittest.cc",
"src/client/linux/minidump_writer/linux_core_dumper_unittest.cc",
"src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc",
"src/client/linux/minidump_writer/minidump_writer_unittest.cc",
"src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc",
"src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc",
"src/common/linux/elf_core_dump_unittest.cc",
"src/common/linux/file_id_unittest.cc",
"src/common/linux/linux_libc_support_unittest.cc",
"src/common/linux/synth_elf.cc",
"src/common/linux/tests/auto_testfile.h",
"src/common/linux/tests/crash_generator.cc",
"src/common/linux/tests/crash_generator.h",
"src/common/memory_range.h",
"src/common/memory_unittest.cc",
"src/common/simple_string_dictionary_unittest.cc",
"src/common/test_assembler.cc",
"src/common/tests/file_utils.cc",
"src/common/tests/file_utils.h",
"src/tools/linux/md2core/minidump_memory_range.h",
"src/tools/linux/md2core/minidump_memory_range_unittest.cc",
]
deps = [
":client",
":linux_dumper_unittest_helper",
":processor_support",
"//build/config:exe_and_shlib_deps",
"//testing/gmock",
"//testing/gtest",
"//testing/gtest:gtest_main",
]
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 http://crbug.com/138571#c18
cflags = [ "-Wno-unused-value" ]
}
if (is_android) {
use_raw_android_executable = true
sources += [ "src/common/android/breakpad_getcontext_unittest.cc" ]
libs = [ "log" ]
extra_dist_files = [ "$root_out_dir/linux_dumper_unittest_helper" ]
}
# Clang's -mstackrealign doesn't work well with
# linux_syscall_support.h hand written asm syscalls.
# See https://crbug.com/556393
configs -= [ "//build/config/compiler:clang_stackrealign" ]
# 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 = [
"src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc",
]
deps = [
":processor_support",
"//build/config:exe_and_shlib_deps",
]
configs += [ ":client_config" ]
if (is_component_build) {
ldflags = [
"-Wl,-rpath,",
rebase_path(root_build_dir),
]
}
}
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",
"//build/config:exe_and_shlib_deps",
]
if (is_android) {
libs = [ "log" ]
}
}
executable("minidump-2-core") {
set_sources_assignment_filter([])
sources = [
"src/tools/linux/md2core/minidump-2-core.cc",
]
include_dirs = [ "src" ]
deps = [
":client",
"//build/config:exe_and_shlib_deps",
]
}
executable("core-2-minidump") {
set_sources_assignment_filter([])
sources = [
"src/tools/linux/core2md/core2md.cc",
]
deps = [
":client",
"//build/config:exe_and_shlib_deps",
]
include_dirs = [ "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",
"src",
]
sources = [
"src/common/windows/dia_util.cc",
"src/common/windows/dia_util.h",
"src/common/windows/guid_string.cc",
"src/common/windows/guid_string.h",
"src/common/windows/omap.cc",
"src/common/windows/omap.h",
"src/common/windows/pdb_source_line_writer.cc",
"src/common/windows/pdb_source_line_writer.h",
"src/common/windows/string_utils-inl.h",
"src/common/windows/string_utils.cc",
"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 = [
"src/client/ios/Breakpad.h",
"src/client/ios/Breakpad.mm",
"src/client/ios/BreakpadController.h",
"src/client/ios/BreakpadController.mm",
"src/client/ios/handler/ios_exception_minidump_generator.h",
"src/client/ios/handler/ios_exception_minidump_generator.mm",
"src/client/mac/crash_generation/ConfigFile.h",
"src/client/mac/crash_generation/ConfigFile.mm",
"src/client/mac/handler/breakpad_nlist_64.cc",
"src/client/mac/handler/breakpad_nlist_64.h",
"src/client/mac/handler/dynamic_images.cc",
"src/client/mac/handler/dynamic_images.h",
"src/client/mac/handler/exception_handler.cc",
"src/client/mac/handler/exception_handler.h",
"src/client/mac/handler/minidump_generator.cc",
"src/client/mac/handler/minidump_generator.h",
"src/client/mac/handler/protected_memory_allocator.cc",
"src/client/mac/handler/protected_memory_allocator.h",
"src/client/mac/sender/uploader.h",
"src/client/mac/sender/uploader.mm",
"src/client/minidump_file_writer-inl.h",
"src/client/minidump_file_writer.cc",
"src/client/minidump_file_writer.h",
"src/common/convert_UTF.c",
"src/common/convert_UTF.h",
"src/common/mac/HTTPMultipartUpload.m",
"src/common/mac/file_id.cc",
"src/common/mac/file_id.h",
"src/common/mac/macho_id.cc",
"src/common/mac/macho_id.h",
"src/common/mac/macho_utilities.cc",
"src/common/mac/macho_utilities.h",
"src/common/mac/macho_walker.cc",
"src/common/mac/macho_walker.h",
"src/common/mac/string_utilities.cc",
"src/common/mac/string_utilities.h",
"src/common/md5.cc",
"src/common/md5.h",
"src/common/simple_string_dictionary.cc",
"src/common/simple_string_dictionary.h",
"src/common/string_conversion.cc",
"src/common/string_conversion.h",
"src/google_breakpad/common/minidump_format.h",
]
set_sources_assignment_filter(sources_assignment_filter)
include_dirs = [
"src",
"src/client/mac/Framework",
"src/common/mac",
]
deps = [
"//third_party/google_toolbox_for_mac",
]
public_configs = [ ":client_config" ]
if (is_clang) {
# See https://bugs.chromium.org/p/google-breakpad/issues/detail?id=675.
cflags = [ "-Wno-deprecated-declarations" ]
}
}
# TODO(GYP) There is some XCode-only targets like ninja-breakpad.
}
if (is_win) {
group("client") {
public_configs = [ ":client_config" ]
}
config("breakpad_handler_warnings") {
if (is_clang) {
# See https://code.google.com/p/google-breakpad/issues/detail?id=658.
cflags = [ "-Wno-reorder" ]
}
}
static_library("breakpad_handler") {
configs += [ ":handler_config" ]
if (is_win) {
public_configs = [ ":handler_config" ]
}
defines = [ "BREAKPAD_NO_TERMINATE_THREAD" ]
sources = [
"src/client/windows/crash_generation/client_info.cc",
"src/client/windows/crash_generation/client_info.h",
"src/client/windows/crash_generation/crash_generation_client.cc",
"src/client/windows/crash_generation/crash_generation_client.h",
"src/client/windows/crash_generation/crash_generation_server.cc",
"src/client/windows/crash_generation/crash_generation_server.h",
"src/client/windows/crash_generation/minidump_generator.cc",
"src/client/windows/crash_generation/minidump_generator.h",
"src/client/windows/handler/exception_handler.cc",
"src/client/windows/handler/exception_handler.h",
"src/common/windows/guid_string.cc",
"src/common/windows/guid_string.h",
"src/common/windows/string_utils-inl.h",
"src/google_breakpad/common/minidump_format.h",
]
configs += [ ":breakpad_handler_warnings" ]
}
source_set("breakpad_sender") {
sources = [
"src/client/windows/sender/crash_report_sender.cc",
"src/client/windows/sender/crash_report_sender.h",
"src/common/windows/http_upload.cc",
"src/common/windows/http_upload.h",
]
configs += [ ":sender_config" ]
public_configs = [ ":sender_config" ]
}
}

@ -1,12 +0,0 @@
Name: Breakpad, An open-source multi-platform crash reporting system
Short Name: breakpad
URL: https://chromium.googlesource.com/breakpad/breakpad
License: New BSD, Apple PSL 2.0 and Apache 2.0
Security Critical: no
This directory contains Chrome's version of Breakpad's Visual Studio build
files (*.vcproj) and a compiled version of Breakpad's symupload.exe utility
for Windows.
Part of the upstream Breakpad project is pulled into the src/ subdirectory via
DEPS.

@ -199,8 +199,6 @@ if (!is_android && !is_mac) {
":file_pre_reader",
":visual_elements_resources",
"//base",
"//breakpad:breakpad_handler",
"//breakpad:breakpad_sender",
"//chrome/app/version_assembly:chrome_exe_manifest",
"//chrome/browser:active_use_util",
"//chrome/browser:chrome_process_finder",
@ -219,6 +217,8 @@ if (!is_android && !is_mac) {
"//crypto",
"//gpu/config:crash_keys",
"//sandbox",
"//third_party/breakpad:breakpad_handler",
"//third_party/breakpad:breakpad_sender",
]
data_deps = [
"//chrome/app/version_assembly:version_assembly_manifest",
@ -1366,8 +1366,8 @@ if (is_win) {
":chrome_app",
":chrome_framework",
":chrome_helper_app",
"//breakpad:dump_syms",
"//chrome/browser/ui/cocoa/notifications:alert_notification_xpc_service",
"//third_party/breakpad:dump_syms",
"//third_party/crashpad/crashpad/handler:crashpad_handler",
]
}
@ -1821,7 +1821,7 @@ if (is_linux) {
action("linux_symbols") {
script = "//build/linux/dump_app_syms.py"
dump_syms_label = "//breakpad:dump_syms($host_toolchain)"
dump_syms_label = "//third_party/breakpad:dump_syms($host_toolchain)"
dump_syms_binary =
get_label_info(dump_syms_label, "root_out_dir") + "/" + "dump_syms"

@ -1,5 +1,4 @@
include_rules = [
"+breakpad",
"+chrome/browser",
"+chrome/child",
"+chrome/chrome_watcher",
@ -38,5 +37,6 @@ include_rules = [
"+sandbox",
"+services/service_manager",
"+services/ui/public",
"+third_party/breakpad/breakpad",
"+third_party/crashpad/crashpad",
]

@ -3,7 +3,7 @@
ProjectType="Visual C++"
Version="8.00"
Name="chrome_binaries"
InheritedPropertySheets="$(SolutionDir)..\third_party\ffmpeg\using_ffmpeg.vsprops;$(SolutionDir)..\breakpad\using_breakpad.vsprops;$(SolutionDir)..\third_party\libxml\build\using_libxml.vsprops;$(SolutionDir)..\third_party\libxslt\build\using_libxslt.vsprops;$(SolutionDir)..\skia\using_skia.vsprops;$(SolutionDir)..\third_party\libpng\using_libpng.vsprops;$(SolutionDir)..\tools\grit\build\using_generated_resources.vsprops;$(SolutionDir)third_party\wtl\using_wtl.vsprops"
InheritedPropertySheets="$(SolutionDir)..\third_party\ffmpeg\using_ffmpeg.vsprops;$(SolutionDir)..\third_party\breakpad\using_breakpad.vsprops;$(SolutionDir)..\third_party\libxml\build\using_libxml.vsprops;$(SolutionDir)..\third_party\libxslt\build\using_libxslt.vsprops;$(SolutionDir)..\skia\using_skia.vsprops;$(SolutionDir)..\third_party\libpng\using_libpng.vsprops;$(SolutionDir)..\tools\grit\build\using_generated_resources.vsprops;$(SolutionDir)third_party\wtl\using_wtl.vsprops"
>
<Tool
Name="VCLinkerTool"

@ -3,7 +3,7 @@
ProjectType="Visual C++"
Version="8.00"
Name="chrome_exe"
InheritedPropertySheets="$(SolutionDir)..\breakpad\using_breakpad.vsprops"
InheritedPropertySheets="$(SolutionDir)..\third_party\breakpad\using_breakpad.vsprops"
>
<Tool
Name="VCCLCompilerTool"

@ -209,8 +209,8 @@ static_library("test_support") {
"//chrome/app/chrome_crash_reporter_client_mac.mm",
]
public_deps += [
"//breakpad",
"//components/crash/content/app",
"//third_party/breakpad",
"//third_party/ocmock",
]
}
@ -5094,12 +5094,12 @@ if (!is_android) {
":test_support",
"//base/test:run_all_unittests",
"//base/test:test_support",
"//breakpad:client",
"//chrome/browser",
"//chrome/child",
"//components/crash/core/common",
"//components/flags_ui:switches",
"//gpu/config:crash_keys",
"//third_party/breakpad:client",
]
}
}

@ -1,11 +1,11 @@
include_rules = [
"+sandbox",
"+breakpad/src/client",
"+chrome/app/chrome_crash_reporter_client_win.h",
"+chrome/common/chrome_switches.h",
"+chrome/common/chrome_version.h",
"+chrome/install_static",
"+third_party/crashpad/crashpad/client/crashpad_client.h",
"+components/crash/content/app/crashpad.h",
"+components/crash/core/common/crash_keys.h",
"+sandbox",
"+third_party/breakpad/breakpad/src/client",
"+third_party/crashpad/crashpad/client/crashpad_client.h",
]

@ -50,9 +50,9 @@ source_set("cast_crash_client") {
if (is_android) {
deps += [
"//breakpad:client",
"//chromecast/base:cast_version",
"//chromecast/browser:jni_headers",
"//third_party/breakpad:client",
]
}
}

@ -1,6 +1,6 @@
include_rules = [
"+breakpad",
"+chromecast/android",
"+chromecast/browser/android",
"+jni",
"+third_party/breakpad",
]

@ -13,14 +13,14 @@
#include "base/files/file_path.h"
#include "base/logging.h"
#include "base/strings/string_number_conversions.h"
#include "breakpad/src/client/linux/handler/exception_handler.h"
#include "breakpad/src/client/linux/handler/minidump_descriptor.h"
#include "chromecast/app/android/cast_crash_reporter_client_android.h"
#include "chromecast/base/version.h"
#include "components/crash/content/app/breakpad_linux.h"
#include "components/crash/content/app/crash_reporter_client.h"
#include "content/public/common/content_switches.h"
#include "jni/CastCrashHandler_jni.h"
#include "third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.h"
#include "third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h"
namespace {

@ -32,13 +32,13 @@ source_set("crash") {
deps = [
"//base",
"//breakpad:client",
"//chromecast/base",
"//chromecast/base:cast_version",
"//components/crash/core/common",
"//components/metrics",
"//components/prefs",
"//gpu/config:crash_keys",
"//third_party/breakpad:client",
]
if (chromecast_branding == "public") {
@ -97,13 +97,13 @@ if (is_linux) {
"//base",
"//base/test:run_all_unittests",
"//base/test:test_support",
"//breakpad:client",
"//chromecast/base:cast_sys_info",
"//chromecast/base:test_support",
"//components/metrics",
"//components/prefs:test_support",
"//testing/gmock",
"//testing/gtest",
"//third_party/breakpad:client",
]
}
}

@ -1,5 +1,5 @@
include_rules = [
"+breakpad",
"+components/crash/core/common",
"+gpu/config/gpu_crash_keys.h",
"+third_party/breakpad",
]

@ -10,12 +10,13 @@
#include "base/memory/ptr_util.h"
// TODO(slan): Find a replacement for LibcurlWrapper in Chromium to remove the
// breakpad dependency.
#include "breakpad/src/common/linux/libcurl_wrapper.h"
#include "third_party/breakpad/breakpad/src/common/linux/libcurl_wrapper.h"
namespace chromecast {
namespace {
// Keep these in sync with "//breakpad/src/client/mac/sender/uploader.mm"
// Keep these in sync with
// //third_party/breakpad/breakpad/src/client/mac/sender/uploader.mm
const char kProdKey[] = "prod";
const char kVerKey[] = "ver";
const char kGuidKey[] = "guid";

@ -6,11 +6,11 @@
#include "base/files/file_util.h"
#include "base/memory/ptr_util.h"
#include "breakpad/src/common/linux/libcurl_wrapper.h"
#include "chromecast/base/scoped_temp_file.h"
#include "chromecast/crash/cast_crashdump_uploader.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/breakpad/breakpad/src/common/linux/libcurl_wrapper.h"
namespace chromecast {
@ -186,4 +186,4 @@ TEST(CastCrashdumpUploaderTest, UploadSucceedsWithValidAttachment) {
ASSERT_TRUE(uploader.Upload(nullptr));
}
} // namespace chromeceast
} // namespace chromecast

@ -1,3 +1,3 @@
include_rules = [
"+breakpad",
"+third_party/breakpad",
]

@ -15,14 +15,14 @@ source_set("lib") {
"crash_reporter_client.h",
]
include_dirs = [ "../../../../breakpad/src" ]
include_dirs = [ "../../../../third_party/breakpad/breakpad/src" ]
deps = [
"//base",
]
if (is_win) {
deps += [ "//breakpad:breakpad_handler" ]
deps += [ "//third_party/breakpad:breakpad_handler" ]
}
}
@ -213,11 +213,11 @@ source_set("app_non_mac_win") {
if (is_win) {
deps += [
"//breakpad:breakpad_handler",
"//sandbox",
"//third_party/breakpad:breakpad_handler",
]
} else if (is_posix && !is_ios) {
deps += [ "//breakpad:client" ]
deps += [ "//third_party/breakpad:client" ]
}
}
@ -249,18 +249,18 @@ static_library("app_breakpad_mac_win_to_be_deleted") {
deps += [
"//base",
"//base:base_static",
"//breakpad:client",
"//components/crash/core/common",
"//content/public/common:result_codes",
"//sandbox",
"//third_party/breakpad:client",
]
if (is_mac) {
deps += [ "//breakpad" ]
deps += [ "//third_party/breakpad" ]
}
if (is_win) {
deps += [ "//breakpad:breakpad_handler" ]
deps += [ "//third_party/breakpad:breakpad_handler" ]
libs = [ "userenv.lib" ]
}
}
@ -299,7 +299,7 @@ source_set("unit_tests") {
if (is_win) {
deps += [
":run_as_crashpad_handler",
"//breakpad:client",
"//third_party/breakpad:client",
"//third_party/crashpad/crashpad/client:client",
"//third_party/crashpad/crashpad/snapshot:snapshot",
"//third_party/crashpad/crashpad/util",

@ -40,16 +40,16 @@
#include "base/strings/string_split.h"
#include "base/strings/string_util.h"
#include "base/threading/thread_checker.h"
#include "breakpad/src/client/linux/crash_generation/crash_generation_client.h"
#include "breakpad/src/client/linux/handler/exception_handler.h"
#include "breakpad/src/client/linux/minidump_writer/directory_reader.h"
#include "breakpad/src/common/linux/linux_libc_support.h"
#include "breakpad/src/common/memory.h"
#include "build/build_config.h"
#include "components/crash/content/app/breakpad_linux_impl.h"
#include "components/crash/content/app/crash_reporter_client.h"
#include "components/crash/core/common/crash_keys.h"
#include "content/public/common/content_descriptors.h"
#include "third_party/breakpad/breakpad/src/client/linux/crash_generation/crash_generation_client.h"
#include "third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.h"
#include "third_party/breakpad/breakpad/src/client/linux/minidump_writer/directory_reader.h"
#include "third_party/breakpad/breakpad/src/common/linux/linux_libc_support.h"
#include "third_party/breakpad/breakpad/src/common/memory.h"
#if defined(OS_ANDROID)
#include <android/log.h>
@ -192,8 +192,8 @@ void SetProcessStartTime() {
}
// uint64_t version of my_int_len() from
// breakpad/src/common/linux/linux_libc_support.h. Return the length of the
// given, non-negative integer when expressed in base 10.
// third_party/breakpad/breakpad/src/common/linux/linux_libc_support.h. Return
// the length of the given, non-negative integer when expressed in base 10.
unsigned my_uint64_len(uint64_t i) {
if (!i)
return 1;
@ -208,8 +208,8 @@ unsigned my_uint64_len(uint64_t i) {
}
// uint64_t version of my_uitos() from
// breakpad/src/common/linux/linux_libc_support.h. Convert a non-negative
// integer to a string (not null-terminated).
// third_party/breakpad/breakpad/src/common/linux/linux_libc_support.h. Convert
// a non-negative integer to a string (not null-terminated).
void my_uint64tos(char* output, uint64_t i, unsigned i_len) {
for (unsigned index = i_len; index; --index, i /= 10)
output[index - 1] = '0' + (i % 10);

@ -12,8 +12,8 @@
#include <stdint.h>
#include <sys/types.h>
#include "breakpad/src/common/simple_string_dictionary.h"
#include "components/crash/content/app/breakpad_linux.h"
#include "third_party/breakpad/breakpad/src/common/simple_string_dictionary.h"
namespace breakpad {

@ -26,10 +26,10 @@
#include "base/strings/sys_string_conversions.h"
#include "base/threading/platform_thread.h"
#include "base/threading/thread_restrictions.h"
#import "breakpad/src/client/mac/Framework/Breakpad.h"
#include "breakpad/src/common/simple_string_dictionary.h"
#include "components/crash/content/app/crash_reporter_client.h"
#include "components/crash/core/common/crash_keys.h"
#import "third_party/breakpad/breakpad/src/client/mac/Framework/Breakpad.h"
#include "third_party/breakpad/breakpad/src/common/simple_string_dictionary.h"
using crash_reporter::GetCrashReporterClient;

@ -32,8 +32,6 @@
#include "base/strings/utf_string_conversions.h"
#include "base/win/pe_image.h"
#include "base/win/win_util.h"
#include "breakpad/src/client/windows/common/ipc_protocol.h"
#include "breakpad/src/client/windows/handler/exception_handler.h"
#include "components/crash/content/app/crash_keys_win.h"
#include "components/crash/content/app/crash_reporter_client.h"
#include "components/crash/content/app/hard_error_handler_win.h"
@ -41,6 +39,8 @@
#include "content/public/common/result_codes.h"
#include "sandbox/win/src/nt_internals.h"
#include "sandbox/win/src/sidestep/preamble_patcher.h"
#include "third_party/breakpad/breakpad/src/client/windows/common/ipc_protocol.h"
#include "third_party/breakpad/breakpad/src/client/windows/handler/exception_handler.h"
#pragma intrinsic(_AddressOfReturnAddress)
#pragma intrinsic(_ReturnAddress)

@ -11,8 +11,8 @@
#include "base/logging.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h"
#include "breakpad/src/client/windows/common/ipc_protocol.h"
#include "components/crash/content/app/crash_reporter_client.h"
#include "third_party/breakpad/breakpad/src/client/windows/common/ipc_protocol.h"
namespace breakpad {

@ -9,10 +9,10 @@
#include "base/command_line.h"
#include "base/files/file_path.h"
#include "base/strings/stringprintf.h"
#include "breakpad/src/client/windows/common/ipc_protocol.h"
#include "components/crash/content/app/crash_reporter_client.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/breakpad/breakpad/src/client/windows/common/ipc_protocol.h"
namespace breakpad {

@ -20,8 +20,8 @@ class FilePath;
#if defined(OS_MACOSX)
// We don't want to directly include
// breakpad/src/client/mac/Framework/Breakpad.h here, so we repeat the
// definition of BreakpadRef.
// third_party/breakpad/breakpad/src/client/mac/Framework/Breakpad.h here, so we
// repeat the definition of BreakpadRef.
//
// On Mac, when compiling without breakpad support, a stub implementation is
// compiled in. Not having any includes of the breakpad library allows for

@ -18,10 +18,10 @@ source_set("browser") {
deps = [
"//base",
"//breakpad:client",
"//components/crash/content/app",
"//content/public/browser",
"//content/public/common",
"//third_party/breakpad:client",
]
if (is_linux || is_android) {
@ -33,16 +33,16 @@ source_set("browser") {
"crash_handler_host_linux.h",
]
deps += [
"//breakpad:client",
"//components/crash/content/app:app_non_mac_win",
"//third_party/breakpad:client",
]
}
# This is not in the GYP build but this target includes breakpad client
# headers, so add the dependency here.
if (is_posix && !is_ios) {
configs += [ "//breakpad:client_config" ]
public_configs = [ "//breakpad:client_config" ]
configs += [ "//third_party/breakpad:client_config" ]
public_configs = [ "//third_party/breakpad:client_config" ]
}
if (is_android) {

@ -33,12 +33,12 @@
#include "base/threading/thread.h"
#include "base/threading/thread_restrictions.h"
#include "base/threading/thread_task_runner_handle.h"
#include "breakpad/src/client/linux/handler/exception_handler.h"
#include "breakpad/src/client/linux/minidump_writer/linux_dumper.h"
#include "breakpad/src/client/linux/minidump_writer/minidump_writer.h"
#include "build/build_config.h"
#include "components/crash/content/app/breakpad_linux_impl.h"
#include "content/public/browser/browser_thread.h"
#include "third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.h"
#include "third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper.h"
#include "third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.h"
#if defined(OS_ANDROID) && !defined(__LP64__)
#include <sys/linux-syscalls.h>

@ -12,7 +12,7 @@ static_library("crash_service") {
deps = [
"//base",
"//breakpad:breakpad_handler",
"//breakpad:breakpad_sender",
"//third_party/breakpad:breakpad_handler",
"//third_party/breakpad:breakpad_sender",
]
}

@ -15,9 +15,9 @@
#include "base/files/file_util.h"
#include "base/logging.h"
#include "base/macros.h"
#include "breakpad/src/client/windows/crash_generation/client_info.h"
#include "breakpad/src/client/windows/crash_generation/crash_generation_server.h"
#include "breakpad/src/client/windows/sender/crash_report_sender.h"
#include "third_party/breakpad/breakpad/src/client/windows/crash_generation/client_info.h"
#include "third_party/breakpad/breakpad/src/client/windows/crash_generation/crash_generation_server.h"
#include "third_party/breakpad/breakpad/src/client/windows/sender/crash_report_sender.h"
namespace breakpad {

@ -106,7 +106,6 @@ if (current_cpu == "x86") {
":nacl64_content",
":nacl64_crash_reporter_client",
"//base",
"//breakpad:breakpad_handler",
"//build/win:default_exe_manifest",
"//chrome:nacl64_exe_version",
"//chrome/install_static:install_static_util",
@ -116,6 +115,7 @@ if (current_cpu == "x86") {
"//content/public/common:static_switches",
"//ppapi/proxy:ipc",
"//sandbox",
"//third_party/breakpad:breakpad_handler",
]
}

@ -10,7 +10,7 @@
class CrashUploadList {
public:
// Should match kReporterLogFilename in
// breakpad/src/client/apple/Framework/BreakpadDefines.h.
// third_party/breakpad/breakpad/src/client/apple/Framework/BreakpadDefines.h.
static const char kReporterLogFilename[];
private:

@ -827,17 +827,17 @@ group("content_shell_crash_test") {
}
if (is_posix && !is_android) {
data_deps += [
"//breakpad:dump_syms($host_toolchain)",
"//breakpad:minidump_stackwalk($host_toolchain)",
"//third_party/breakpad:dump_syms($host_toolchain)",
"//third_party/breakpad:minidump_stackwalk($host_toolchain)",
]
}
if (is_android) {
data_deps += [
"//breakpad:dump_syms",
"//breakpad:microdump_stackwalk",
"//breakpad:minidump_dump",
"//breakpad:minidump_stackwalk",
"//breakpad:symupload",
"//third_party/breakpad:dump_syms",
"//third_party/breakpad:microdump_stackwalk",
"//third_party/breakpad:minidump_dump",
"//third_party/breakpad:minidump_stackwalk",
"//third_party/breakpad:symupload",
"//tools/android/forwarder2",
]
}

@ -11,8 +11,8 @@ Breakpad is an open source library which we use for crash reporting across all
three platforms (Linux, Mac and Windows). For Linux, a substantial amount of
work was required to support cross-process dumping. At the time of writing this
code is currently forked from the upstream breakpad repo. While this situation
remains, the forked code lives in `breakpad/linux`. The upstream repo is
mirrored in `breakpad/src`.
remains, the forked code lives in `third_party/breakpad/linux`. The upstream
repo is mirrored in `third_party/breakpad/breakpad`.
The code currently supports i386 only. Getting x86-64 to work should only be a
minor amount of work.
@ -22,13 +22,13 @@ minor amount of work.
Breakpad deals in a file format called 'minidumps'. This is a Microsoft format
and thus is defined by in-memory structures which are dumped, raw, to disk. The
main header file for this file format is
`breakpad/src/google_breakpad/common/minidump_format.h`.
`third_party/breakpad/breakpad/src/google_breakpad/common/minidump_format.h`.
At the top level, the minidump file format is a list of key-value pairs. Many of
the keys are defined by the minidump format and contain cross-platform
representations of stacks, threads etc. For Linux we also define a number of
custom keys containing `/proc/cpuinfo`, `lsb-release` etc. These are defined in
`breakpad/linux/minidump_format_linux.h`.
`third_party/breakpad/breakpad/linux/minidump_format_linux.h`.
### Catching exceptions

@ -1,5 +1,4 @@
include_rules = [
"+breakpad/src/client/ios",
"+components/bookmarks/browser",
"+components/bookmarks/test",
"+components/browser_sync",
@ -27,6 +26,7 @@ include_rules = [
"+ios/net",
"+ios/public/provider/chrome",
"+mojo/edk/embedder/embedder.h",
"+third_party/breakpad/breakpad/src/client/ios",
# Strings and resources.
"+components/grit",

@ -34,7 +34,6 @@ source_set("unit_tests") {
":test_support",
"//base",
"//base/test:test_support",
"//breakpad:client",
"//components/handoff",
"//components/metrics",
"//ios/chrome/app",
@ -65,6 +64,7 @@ source_set("unit_tests") {
"//ios/web/public/test",
"//net:test_support",
"//testing/gtest",
"//third_party/breakpad:client",
"//third_party/ocmock",
"//ui/base",
"//url",

@ -8,7 +8,6 @@
#import <Foundation/Foundation.h>
#include "base/mac/scoped_block.h"
#import "breakpad/src/client/ios/BreakpadController.h"
#include "components/metrics/metrics_service.h"
#import "ios/chrome/app/application_delegate/startup_information.h"
#include "ios/chrome/browser/application_context.h"
@ -20,6 +19,7 @@
#import "ios/chrome/test/ocmock/OCMockObject+BreakpadControllerTesting.h"
#include "net/base/network_change_notifier.h"
#include "testing/platform_test.h"
#import "third_party/breakpad/breakpad/src/client/ios/BreakpadController.h"
#import "third_party/ocmock/OCMock/OCMock.h"
#include "third_party/ocmock/gtest_support.h"

@ -1,6 +1,4 @@
include_rules = [
"+breakpad/src/client/ios",
"+breakpad/src/common",
"+components/about_handler",
"+components/autofill/core/browser",
"+components/autofill/core/common",
@ -105,6 +103,8 @@ include_rules = [
"+net",
"+rlz/features",
"+services/metrics",
"+third_party/breakpad/breakpad/src/client/ios",
"+third_party/breakpad/breakpad/src/common",
"+third_party/brotli",
"+third_party/google_toolbox_for_mac",
"+third_party/libaddressinput",

@ -22,11 +22,11 @@ source_set("crash_report") {
deps = [
"//base",
"//breakpad:client",
"//components/crash/core/common",
"//components/upload_list",
"//ios/chrome/browser",
"//ios/web",
"//third_party/breakpad:client",
]
}
@ -70,7 +70,6 @@ source_set("unit_tests") {
":crash_report",
":crash_report_internal",
"//base",
"//breakpad:client",
"//ios/chrome/browser/browser_state",
"//ios/chrome/browser/browser_state:test_support",
"//ios/chrome/browser/sessions:serialisation",
@ -79,6 +78,7 @@ source_set("unit_tests") {
"//ios/web/public/test",
"//testing/gmock",
"//testing/gtest",
"//third_party/breakpad:client",
"//third_party/ocmock",
]
}

@ -22,9 +22,9 @@
#import "ios/chrome/browser/crash_report/crash_report_user_application_state.h"
// TODO(stuartmorgan): Move this up where it belongs once
// http://code.google.com/p/google-breakpad/issues/detail?id=487
// is fixed. For now, put it at the end to avoid compiler errors.
#import "breakpad/src/client/ios/BreakpadController.h"
// https://crbug.com/google-breakpad/487 is fixed. For now, put it at the end to
// avoid compiler errors.
#import "third_party/breakpad/breakpad/src/client/ios/BreakpadController.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."

@ -2,12 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "breakpad/src/client/ios/BreakpadController.h"
#import "ios/chrome/browser/crash_report/breakpad_helper.h"
#import "ios/chrome/test/base/scoped_block_swizzler.h"
#import "ios/chrome/test/ocmock/OCMockObject+BreakpadControllerTesting.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/platform_test.h"
#import "third_party/breakpad/breakpad/src/client/ios/BreakpadController.h"
#import "third_party/ocmock/OCMock/OCMock.h"
#include "third_party/ocmock/gtest_support.h"

@ -13,8 +13,8 @@
#include "base/metrics/user_metrics.h"
#include "base/metrics/user_metrics_action.h"
#include "base/time/time.h"
#import "breakpad/src/client/ios/BreakpadController.h"
#include "ios/chrome/browser/experimental_flags.h"
#import "third_party/breakpad/breakpad/src/client/ios/BreakpadController.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."

@ -55,11 +55,11 @@ source_set("unit_tests") {
deps = [
":safe_mode",
"//base",
"//breakpad:client",
"//ios/chrome/browser/crash_report",
"//ios/chrome/test/base",
"//ios/chrome/test/ocmock",
"//testing/gtest",
"//third_party/breakpad:client",
"//third_party/ocmock",
]
libs = [ "UIKit.framework" ]

@ -3,12 +3,12 @@
// found in the LICENSE file.
#import "ios/chrome/browser/ui/safe_mode/safe_mode_view_controller.h"
#import "breakpad/src/client/ios/BreakpadController.h"
#import "ios/chrome/browser/crash_report/breakpad_helper.h"
#import "ios/chrome/test/base/scoped_block_swizzler.h"
#import "ios/chrome/test/ocmock/OCMockObject+BreakpadControllerTesting.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/platform_test.h"
#import "third_party/breakpad/breakpad/src/client/ios/BreakpadController.h"
#import "third_party/ocmock/OCMock/OCMock.h"
#include "third_party/ocmock/gtest_support.h"

@ -1,5 +1,4 @@
include_rules = [
"+breakpad/src/client/ios",
"+components/autofill/core/browser",
"+components/bookmarks",
"+components/browser_sync",
@ -21,6 +20,7 @@ include_rules = [
"+ios/public/provider/chrome",
"+ios/public/test",
"+net/url_request",
"+third_party/breakpad/breakpad/src/client/ios",
"+third_party/google_toolbox_for_mac",
"+ui",

@ -36,7 +36,6 @@ source_set("test_support") {
deps = [
"//base",
"//base/test:test_support",
"//breakpad:client",
"//components/autofill/core/browser",
"//components/bookmarks/browser",
"//components/browser_sync",
@ -87,6 +86,7 @@ source_set("test_support") {
"//ios/web/public/test",
"//net",
"//net:test_support",
"//third_party/breakpad:client",
"//url",
]
}

@ -5,7 +5,6 @@
#import "ios/chrome/test/app/chrome_test_util.h"
#include "base/mac/foundation_util.h"
#import "breakpad/src/client/ios/BreakpadController.h"
#include "components/metrics/metrics_pref_names.h"
#include "components/metrics/metrics_service.h"
#import "ios/chrome/app/application_delegate/metrics_mediator.h"
@ -28,6 +27,7 @@
#import "ios/chrome/browser/ui/ntp/new_tab_page_controller.h"
#import "ios/chrome/browser/ui/tab_switcher/tab_switcher.h"
#import "ios/web/public/test/native_controller_test_util.h"
#import "third_party/breakpad/breakpad/src/client/ios/BreakpadController.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."

@ -11,8 +11,8 @@ source_set("ocmock") {
]
deps = [
"//base",
"//breakpad:client",
"//testing/gtest",
"//third_party/breakpad:client",
"//third_party/ocmock",
]
}

@ -4,8 +4,8 @@
#import "ios/chrome/test/ocmock/OCMockObject+BreakpadControllerTesting.h"
#import "breakpad/src/client/ios/BreakpadController.h"
#include "testing/gtest/include/gtest/gtest.h"
#import "third_party/breakpad/breakpad/src/client/ios/BreakpadController.h"
#import "third_party/ocmock/OCMock/OCMock.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)

@ -1,9 +1,9 @@
include_rules = [
"+breakpad/src/client/ios",
"+components/content_settings",
"+components/crash/core/common",
"+ios/chrome/browser",
"+ios/net",
"+ios/public/provider/chrome",
"+ios/web/public",
"+third_party/breakpad/breakpad/src/client/ios",
]

@ -50,7 +50,6 @@ source_set("steps") {
deps = [
":step_runner",
"//base",
"//breakpad:client",
"//components/content_settings/core/browser",
"//ios/chrome/app:app_internal",
"//ios/chrome/app/startup",
@ -69,6 +68,7 @@ source_set("steps") {
"//ios/clean/chrome/browser/ui/root",
"//ios/net",
"//ios/web",
"//third_party/breakpad:client",
]
}

@ -5,10 +5,10 @@
#import "ios/clean/chrome/app/steps/breakpad_initializer.h"
#include "base/logging.h"
#import "breakpad/src/client/ios/BreakpadController.h"
#include "ios/chrome/browser/application_context.h"
#import "ios/clean/chrome/app/steps/step_context.h"
#import "ios/clean/chrome/app/steps/step_features.h"
#import "third_party/breakpad/breakpad/src/client/ios/BreakpadController.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."

@ -56,9 +56,9 @@ if (enable_nacl) {
# http://crbug.com/245456
if (!is_win && target_cpu == "x64") {
deps += [
"//breakpad:dump_syms($host_toolchain)",
"//breakpad:minidump_dump($host_toolchain)",
"//breakpad:minidump_stackwalk($host_toolchain)",
"//third_party/breakpad:dump_syms($host_toolchain)",
"//third_party/breakpad:minidump_dump($host_toolchain)",
"//third_party/breakpad:minidump_stackwalk($host_toolchain)",
]
}
}

@ -118,9 +118,9 @@ source_set("breakpad") {
]
if (is_mac) {
deps += [ "//breakpad" ]
deps += [ "//third_party/breakpad" ]
} else if (is_win) {
deps += [ "//breakpad:breakpad_handler" ]
deps += [ "//third_party/breakpad:breakpad_handler" ]
}
}
@ -178,7 +178,7 @@ source_set("unit_tests") {
]
if (is_win || is_mac || is_chromeos) {
deps += [ "//breakpad:client" ]
deps += [ "//third_party/breakpad:client" ]
}
if (is_win) {

@ -1,9 +1,9 @@
include_rules = [
"+breakpad",
"+google/protobuf",
"+google_apis",
"+mojo/edk/embedder",
"+net",
"+third_party/breakpad",
"+third_party/zlib",
"+ui/base",
]

@ -8,7 +8,7 @@
#include "base/logging.h"
#import "base/mac/scoped_nsautorelease_pool.h"
#import "breakpad/src/client/mac/Framework/Breakpad.h"
#import "third_party/breakpad/breakpad/src/client/mac/Framework/Breakpad.h"
namespace remoting {

@ -22,7 +22,7 @@
#include "base/strings/utf_string_conversions.h"
#include "base/win/current_module.h"
#include "base/win/wrapped_window_proc.h"
#include "breakpad/src/client/windows/handler/exception_handler.h"
#include "third_party/breakpad/breakpad/src/client/windows/handler/exception_handler.h"
namespace remoting {
void InitializeCrashReportingForTest(const wchar_t* pipe_name);

@ -12,10 +12,10 @@
#include "base/logging.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "breakpad/src/client/windows/crash_generation/client_info.h"
#include "breakpad/src/client/windows/crash_generation/crash_generation_server.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/breakpad/breakpad/src/client/windows/crash_generation/client_info.h"
#include "third_party/breakpad/breakpad/src/client/windows/crash_generation/crash_generation_server.h"
namespace {

@ -28,8 +28,7 @@ fi
for ARCH in ${ARCHS}; do
# Use -c to avoid dumping CFI, because the Breakpad stackwalk is incompatible
# with CFI produced by clang.
# http://code.google.com/p/google-breakpad/issues/detail?id=443
# with CFI produced by clang. https://crbug.com/google-breakpad/443
"${DUMP_SYMS_TOOL}" -a "${ARCH}" -c "${DWARF_PATH}" > \
"${SOURCE_BUNDLE}-${VERSION}-${ARCH}.breakpad"
done

@ -205,7 +205,7 @@
"type": "console_test_launcher",
},
"breakpad_unittests": {
"label": "//breakpad:breakpad_unittests",
"label": "//third_party/breakpad:breakpad_unittests",
"type": "console_test_launcher",
},
"browser_tests": {
@ -458,7 +458,7 @@
"type": "console_test_launcher",
},
"dump_syms" : {
"label": "//breakpad:dump_syms",
"label": "//third_party/breakpad:dump_syms",
"type": "additional_compile_target",
},
"events_unittests": {
@ -728,7 +728,7 @@
],
},
"microdump_stackwalk" : {
"label": "//breakpad:microdump_stackwalk",
"label": "//third_party/breakpad:microdump_stackwalk",
"type": "additional_compile_target",
},
"midi_unittests": {

@ -29,6 +29,7 @@
/bison
/boringssl/src
/bouncycastle/lib/*.jar
/breakpad/breakpad
/byte_buddy/lib/*.jar
/cacheinvalidation/cacheinvalidation_unittests_run.xml
/cardboard-java/src

988
third_party/breakpad/BUILD.gn vendored Normal file

@ -0,0 +1,988 @@
# 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" ]
}
# {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/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",
]
defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
configs += [ ":tools_config" ]
}
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",
]
defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ]
include_dirs = [ "breakpad/src" ]
dict = "minidump_fuzzer.dict"
libfuzzer_options = [
"close_fd_mask=3",
"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",
"//build/config:exe_and_shlib_deps",
]
defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
configs += [ ":tools_config" ]
}
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",
"//build/config:exe_and_shlib_deps",
]
defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
configs += [ ":tools_config" ]
# 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" ]
deps = [
"//build/config:exe_and_shlib_deps",
]
}
} 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/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" ]
}
deps = [
"//build/config:exe_and_shlib_deps",
]
}
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" ]
deps = [
"//build/config:exe_and_shlib_deps",
]
}
} 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",
"//build/config:exe_and_shlib_deps",
]
}
# 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" ]
deps = [
"//build/config:exe_and_shlib_deps",
]
}
# 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/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" ]
deps = [
"//build/config:exe_and_shlib_deps",
]
}
} 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.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" ]
}
# Clang's -mstackrealign doesn't work well with
# linux_syscall_support.h hand written asm syscalls.
# See https://crbug.com/556393
configs -= [ "//build/config/compiler:clang_stackrealign" ]
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_range.h",
"breakpad/src/common/memory_unittest.cc",
"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",
":linux_dumper_unittest_helper",
":processor_support",
"//build/config:exe_and_shlib_deps",
"//testing/gmock",
"//testing/gtest",
"//testing/gtest:gtest_main",
]
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" ]
}
# Clang's -mstackrealign doesn't work well with
# linux_syscall_support.h hand written asm syscalls.
# See https://crbug.com/556393
configs -= [ "//build/config/compiler:clang_stackrealign" ]
# 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",
"//build/config:exe_and_shlib_deps",
]
configs += [ ":client_config" ]
if (is_component_build) {
ldflags = [
"-Wl,-rpath,",
rebase_path(root_build_dir),
]
}
}
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",
"//build/config:exe_and_shlib_deps",
]
if (is_android) {
libs = [ "log" ]
}
}
executable("minidump-2-core") {
set_sources_assignment_filter([])
sources = [
"breakpad/src/tools/linux/md2core/minidump-2-core.cc",
]
include_dirs = [ "breakpad/src" ]
deps = [
":client",
"//build/config:exe_and_shlib_deps",
]
}
executable("core-2-minidump") {
set_sources_assignment_filter([])
sources = [
"breakpad/src/tools/linux/core2md/core2md.cc",
]
deps = [
":client",
"//build/config:exe_and_shlib_deps",
]
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/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" ]
}
}

12
third_party/breakpad/DEPS vendored Normal file

@ -0,0 +1,12 @@
skip_child_includes = [
'linux',
]
specific_include_rules = {
'^minidump_fuzzer\.cc$': [
'+base',
'+google_breakpad',
'+processor',
'+testing',
],
}

9
third_party/breakpad/README.chromium vendored Normal file

@ -0,0 +1,9 @@
Name: Breakpad, An open-source multi-platform crash reporting system
Short Name: breakpad
URL: https://chromium.googlesource.com/breakpad/breakpad
Version: unknown
License: New BSD, Apple PSL 2.0 and Apache 2.0
Security Critical: yes
The upstream Breakpad project is pulled into the breakpad/ subdirectory via
DEPS.

@ -30,7 +30,7 @@
#ifndef BREAKPAD_GOOGLETEST_INCLUDES_H__
#define BREAKPAD_GOOGLETEST_INCLUDES_H__
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#endif // BREAKPAD_GOOGLETEST_INCLUDES_H__

@ -33,12 +33,13 @@
#include <unistd.h>
#include "breakpad/src/client/linux/handler/exception_handler.h"
#include "breakpad/src/common/linux/linux_libc_support.h"
#include "third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.h"
#include "third_party/breakpad/breakpad/src/common/linux/linux_libc_support.h"
#include "third_party/lss/linux_syscall_support.h"
static bool DumpCallback(const google_breakpad::MinidumpDescriptor& descriptor,
void* context, bool success) {
void* context,
bool success) {
if (!success) {
static const char msg[] = "Failed to write minidump\n";
sys_write(2, msg, sizeof(msg) - 1);

@ -6,9 +6,9 @@
#include <stdint.h>
#include <string.h>
#include <streambuf>
#include <istream>
#include <memory>
#include <streambuf>
#include "base/memory/free_deleter.h"
#include "google_breakpad/processor/basic_source_line_resolver.h"

@ -6,6 +6,6 @@
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="&quot;$(SolutionDir)..\breakpad\src&quot;"
AdditionalIncludeDirectories="&quot;$(SolutionDir)..\third_party\breakpad\breakpad\src&quot;"
/>
</VisualStudioPropertySheet>

@ -119,11 +119,6 @@ PATH_SPECIFIC_WHITELISTED_LICENSES = {
'UNKNOWN',
],
# http://code.google.com/p/google-breakpad/issues/detail?id=450
'breakpad/src': [
'UNKNOWN',
],
'buildtools/third_party/libc++/trunk/test': [
# http://llvm.org/bugs/show_bug.cgi?id=25980
'UNKNOWN',
@ -186,6 +181,11 @@ PATH_SPECIFIC_WHITELISTED_LICENSES = {
'UNKNOWN',
],
# https://crbug.com/google-breakpad/450
'third_party/breakpad/breakpad': [
'UNKNOWN',
],
# http://crbug.com/603946
# https://github.com/google/oauth2client/issues/331
# Just imports googleapiclient. Chromite is not shipped.

@ -20,5 +20,5 @@ fun:unpack_RGBA8888
fun:unpack_RGB888
# False positives due to use of linux_syscall_support. http://crbug.com/394028
src:*/breakpad/src/*
src:*/third_party/breakpad/breakpad/src/*
src:*/components/crash/content/app/breakpad_linux.cc

@ -38,14 +38,14 @@ group("telemetry_chrome_test") {
}
if (is_linux) {
data_deps += [ "//breakpad:dump_syms($host_toolchain)" ]
data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
}
if (is_mac) {
data_deps += [
"//breakpad:dump_syms",
"//chrome:chrome_framework",
"//chrome:chrome_helper_app",
"//third_party/breakpad:dump_syms",
"//third_party/crashpad/crashpad/tools:crashpad_database_util",
]
}