Commit graph

732 commits

Author SHA1 Message Date
Peter Kasting 4c27c15b84 Fix an instance of -Wunused-but-set-variable.
Bug: chromium:1203071
Change-Id: I749fcfe30f9d634acb314a43f9c9ffcdbb26195c
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3053832
Reviewed-by: Sterling Augustine <saugustine@google.com>
2021-07-26 16:01:35 +00:00
Peter Kasting b95c4868b1 Fix a -Wdeprecated-copy warning.
Bug: chromium:1221591
Change-Id: I52968a535f126b854f8e860b9632ffe00c55b6be
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2973213
Reviewed-by: Lei Zhang <thestig@chromium.org>
2021-06-18 17:48:13 +00:00
Darren Mo 7ba29f4a36 Mitigate upload failure when app is backgrounded.
iOS closes an app’s network connections when the app is backgrounded. This can cause an in-progress upload request to fail. We can mitigate this by requesting additional background execution time using the `UIApplication` background task APIs.

BUG=b:130302235

Change-Id: Ifd8e14ca82c736ad7dd60dcdd0d4bbcabb76f5ad
Signed-off-by: Darren Mo <darrenmo@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2251020
Reviewed-by: Mark Mentovai <mark@chromium.org>
2021-06-16 22:10:20 +00:00
Joshua Peraza 0e86eebc5a mac: fix xcode project
Change-Id: Ia8d1a6a7249cdadfd6790da34194376b3f6dbd51
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2466325
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2021-05-19 21:03:25 +00:00
Ludovic Guegan bd4a28c08b core_handler: coredump handler to produce minidump
On Linux, it is possible to register a core handler via
/proc/sys/kernel/core_pattern. Doing so invokes the core handler when
a process crash. The core_handler uses /proc/<pid>/mem to access the
process memory. This way it is not necessary to process the full
coredump which takes time and consumes memory.

In order to profit from this core handler, for example, one can
integrate dump_syms into Yocto and generate an archive with the
breakpad symbols of all the binaries in the rootfs. Minidumps are
especially useful on embedded systems since they are lightweight and
provide contextual information.

Change-Id: I9298d81159029cefb81c915831db54884310ad05
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2536917
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2020-11-23 23:15:15 +00:00
Mike Frysinger 5640e57f1f CopyFile: add a C++ API
Having to swizzle to C strings all the time is a bit annoying.

Change-Id: I0b80877706e32e873e567685f6b471745da70311
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2396557
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-09-07 23:03:28 +00:00
Mike Frysinger 09b056975d fix pointer style to match the style guide
We do this in a lot of places, but we're inconsistent.
Normalize the code to the Google C++ style guide.

Change-Id: Ic2aceab661ce8f6b993dda21b1cdf5d2198dcbbf
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2262932
Reviewed-by: Sterling Augustine <saugustine@google.com>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-07-15 06:20:02 +00:00
Michael Forney e780d58fd7 Use breakpad_getcontext on all Linux platforms missing getcontext
getcontext is also not available on musl libc, so generalize
breakpad_getcontext so it can be used as a fallback for non-Android
platforms as well.

On x86_64 and i386, ucontext_t uses an Android-specific offset for
storage of FP registers, since its sigset_t differs in size. So,
make the definition of MCONTEXT_FPREGS_MEM and UCONTEXT_FPREGS_MEM_OFFSET
conditional on whether we are building for Android.

On glibc and musl, signal.h and asm/sigcontext.h can't be included
together, so in breakpad_context_unittest.cc, only compare the libc
and kernel _fpstate when on Android.

Bug: google-breakpad:631
Change-Id: If81d73c4101bae946e9a3655b8d1c40a34ab6c38
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2102135
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2020-03-16 21:27:07 +00:00
Mike Frysinger 02b7be4065 convert_UTF: try to update xcode files
Bug: google-breakpad:725
Change-Id: I8c5f9a828e1bb6a2a5603fbfaa127f6dfe64a4b4
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1803770
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-03-14 21:20:18 +00:00
Michael Forney a5fa28ddf0 Fix some bugs in CheckMicrodumpContents
The crash address from the microdump was never checked against
anything. Instead, the test was checking the value of a constant.

On 32-bit systems, an intptr_t cannot represent kCrashAddress
(0xDEADDEAD), causing a failure when the crash address is parsed
from the microdump. Instead, use uintptr_t, which matches the type
of kCrashAddress.

Change-Id: Ib5612743803609f7801dcfb98deaa8779e362025
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2100816
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2020-03-13 01:50:14 +00:00
Michael Forney 75ca6a193d Use public fpregset_t type to define fpstate_t
The _libc_fpstate struct tag is an implementation detail of glibc,
and musl uses a different struct tag, _fpstate.

Unfortunately, the public type fpregset_t is a pointer type, so is
not suitable for allocating storage, or referring to constant
storage. Instead, we can use std::remove_pointer<fpregset_t>::type
to refer to the pointed-to type, regardless of the struct tag.

Bug: google-breakpad:631
Change-Id: Iaf47f15b2d834dd8de839431f65a481e9b0c7f9e
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2096171
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2020-03-10 23:49:55 +00:00
Michael Forney a03ad96dbd Use standard header locations for poll.h and signal.h
sys/poll.h and sys/signal.h just redirect to the standardized
location for these headers, poll.h and signal.h.

On musl libc, including the incorrect header path results in a
warning, and since breakpad is built with -Werror, this is an error.

In exception_handler.cc, signal.h is already included earlier, so
we can drop the sys/signal.h include.

Bug: google-breakpad:631
Change-Id: If36d326453e3267d38a5b92ed1301f828e46befe
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2097344
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2020-03-10 22:52:40 +00:00
Ivan Penkov 216cea7bca Update Xcode project files to fix build errors.
* Renamed convert_UTF.c to convert_UTF.cc
* Enabled to use C++17 for [[clang::fallthrough]] defined in src/common/macros.h

Patch by Hiro Komatsu

Change-Id: I5de7f7dd4c8bf231a004144a5c82828c59ddcfd6
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2026761
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-01-29 18:53:05 +00:00
Joshua Peraza e5ef907c2e ios: build for arm64e
When __DARWIN_OPAQUE_ARM_THREAD_STATE64 is set (by default when building
for arm64e), fp, lr, sp, pc, and flags (but not x or cpsr) in thread
state are prepended with "__opaque" and intended to be accessed via
supplied getters which may also authenticate pointers. We don't want to
authenticate those pointers (since we expect they may be invalid and
want to recover those invalid values) so access them directly.

Bug: b/140375065
Change-Id: Ibe6c1dbfb5d68a9d350614445fa06d48873f8549
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1986868
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-01-03 17:56:11 +00:00
Sylvain Defresne 792e6b2143 Remove dependency of uploader.mm on GTMLogger
The file GTMLogger shipped with breakpad is a copy of the version
from google_toolbox_for_mac. Having uploader.mm depend on GTMLogger
causes pain to iOS projects that want to integrate both breakpad
and google_toolbox_for_mac.

Since the file uploader.mm mixed uses of fprintf and GTMLogger to
log errors and warning, convert it to only use fprintf to stderr.

Bug: none
Change-Id: I68313ccf6951676a2859f44225281813722096ba
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1911755
Reviewed-by: Mark Mentovai <mark@chromium.org>
2019-11-12 16:17:19 +00:00
Mark Mentovai 8c62281f8b Revert "Remove use of "register" keyword, deprecated in C++17"
This reverts commit 07411862ea.

We were a bit overzealous in removing “register” here. Both clang and
GCC correctly disallow “register” as a storage class specifier in C++17
mode by producing an error in ordinary use. However, they require
“register” to be specified for explicit register variables, and do not
produce an error in this case.

Change-Id: I223f2652c6da4215d6e8788d902e767c94b8c29d
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1894875
Reviewed-by: Mark Mentovai <mark@chromium.org>
2019-11-01 03:49:20 +00:00
Joshua Peraza 5085b1d0df linux, client: set module name from DT_SONAME
3e56ef9d changed dump_syms to set the module name from DT_SONAME
expecting that clients were already using DT_SONAME when it was
present. The Breakpad client previously only used DT_SONAME as the name
for a module if it detected that it was likely mapped from a zip file.
This patch updates the Breakpad Linux client to always use the
DT_SONAME in minidumps if it's present.

Also included are changes to address comments that were missed from
that review.

Bug: 1016924
Change-Id: I4aae8c05e6793d4b0598049a8964ddd4cb0c6194
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1889231
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2019-10-30 17:54:00 +00:00
Joshua Peraza 3e56ef9d4e linux, dump_syms: set module name from DT_SONAME
The Breakpad and Crashpad clients will use an object's DT_SONAME as
the name for a module if it exists. Previously, linux dump_syms would
assume the basename of an input elf file matches that value, causing
symbol lookups to fail if they were mismatched. This patch updates
dump_syms to use DT_SONAME as the module name, if present.

Bug: 1016924
Change-Id: I5eff0cf06c703841df3fb552cb5a8e1e50a20c64
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1876763
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2019-10-24 18:59:59 +00:00
Mike Frysinger db1cda2653 convert_UTF: rewrite in C++
This allows us to namespace the symbols properly.

Bug: google-breakpad:725
Change-Id: Iea8052547eef6c0acb299c1995781735c6d8994f
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1769236
Reviewed-by: Mark Mentovai <mark@chromium.org>
2019-09-04 20:25:23 +00:00
Mark Mentovai 07411862ea Remove use of "register" keyword, deprecated in C++17
"register" as a storage class specifier has been deprecated since C++11,
and has been removed from C++17 while remaining a reserved word. See
C++17 5.11 and C.4.3.

Change-Id: I2dbab8a7061cb680d902644d39ea1a7fbc930e5c
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1749329
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2019-08-12 18:36:48 +00:00
Nelson Billing c11646e643 Fix breakpad client build.
- Was broken by a rename in http upload util code.

Change-Id: I72c275fe45638c83e535901e79817893b00ee62e
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1673138
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2019-06-24 22:44:01 +00:00
Nelson Billing c38725b70e Fix 'debug_file' in PESourceLineWriter.
- Add a #define to testing.gyp to avoid warnings about TR1 deprecation.
- PESourceLineWriter now reads debug_file from CodeView record instead
  of using code_file value.
- Updated PE-only MD reading unit test.

Change-Id: Ib4e6201df3e3fd651e160f310584b5a67b16c842
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1668347
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2019-06-19 23:16:50 +00:00
Joshua Peraza 6f287a5f57 linux: fix broken tests
Fixes errors for comparisons between signed and unsigned ints.

Change-Id: I7ef151ba84a48a0c8cc449cfaf12b9fef775d5a7
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1642361
Reviewed-by: Mark Mentovai <mark@chromium.org>
2019-06-04 00:19:16 +00:00
Ivan Penkov e436b07330 Fix a build break with SDK 10.14.
* Updated the minimal target version from 10.5 to 10.7.
* Reference for the similar issue:
  https://github.com/uglide/RedisDesktopManager/issues/4284

Fix provided by Hiroyuki Komatsu.

Change-Id: Ie08f8f6084e66d439d8b6282f1f4734b2dfe778f
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1633390
Reviewed-by: Mark Mentovai <mark@chromium.org>
2019-05-29 16:53:09 +00:00
John Z Wu d930308bbb Fix orphaned crash reports.
The path NSCachesDirectory may change across app updates and sometimes
even across app launches. As a result, the Config-XXX files may end up
with an outdated path to the associated minidump file.

Change-Id: I0befde26b2ac406c154ce7c7e9be0063ee99892d
Bug:850379
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1592561
Reviewed-by: Mark Mentovai <mark@chromium.org>
2019-05-15 03:47:37 +00:00
Mark Mentovai 21b48a72aa Linux breakpad_unittests: fix ThreadSanitizer problems
Some tests were failing because they had expectations about the number
of threads in a process, but TSan, and in some cases, ASan, introduce
their own threads. Where a sanitizer affects this, the expectations are
now used as minimum thread counts, not exact thread counts. See
https://www.brooklinen.com/blogs/brookliving/best-thread-count-for-sheets.

These problems were detected by ThreadSanitizer at
https://logs.chromium.org/logs/chromium/buildbucket/cr-buildbucket.appspot.com/8915151099544583616/+/steps/breakpad_unittests__with_patch_/0/stdout

Bug: chromium:949098
Change-Id: Ie40f1766bea27e9bcb112bf9e0b8b846fb343012
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1585948
Reviewed-by: Robert Sesek <rsesek@chromium.org>
2019-04-26 18:44:54 +00:00
Mark Mentovai 9f90ceb904 Linux MinidumpWriter: fix stack-use-after-scope violation
One form of google_breakpad::WriteMinidump() passed MappingList and
AppMemoryList objects by reference to a MinidumpWriter object,
instantiating them directly as constructor parameters. The
MinidumpWriter stored these objects internally as references, and the
underlying objects went out of scope after MinidumpWriter construction.
The MinidumpWriter outlived them, causing a violation on any attempt to
access them following construction.

This bug was detected by AddressSanitizer at
https://logs.chromium.org/logs/chromium/buildbucket/cr-buildbucket.appspot.com/8915150848087289472/+/steps/breakpad_unittests__with_patch_/0/stdout

Bug: chromium:949098
Change-Id: I072ea9f1b64e1eae3e89d4a2b158764ff7970db5
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1585946
Reviewed-by: Robert Sesek <rsesek@chromium.org>
2019-04-26 18:44:49 +00:00
Olivier Robin 1fc9cc0d0e [Breakpad iOS] Add a callback on report upload completion.
This CL adds a result callback on report upload completion.
On failure, Breakpad deletes the configuration file and does retry to
upload a report.
Using this callback, the client will be able to log some metrics and to
act on upload failure.

Bug: 954175
Change-Id: I95a3264b65d4c06ba5d8dde8377440d23f1e2081
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1572661
Reviewed-by: Mark Mentovai <mark@chromium.org>
2019-04-23 13:07:06 +00:00
Mark Mentovai 8c70c504b2 Make breakpad_unittests work with Chrome's test runner instead of gtest's
Chrome's test runner on Linux installs its own StackDumpSignalHandler
which swallows signals and doesn't re-raise them. This is sloppy, but
apparently there are reasons (https://crbug.com/551681). For
breakpad_unittests, it causes problems where a test process expects (via
waitpid()) to observe a child crash.  Deal with those cases by
explicitly restoring the default signal handler.

In another case, Chrome's test runner seems to have been arriving at the
conclusion that it was to expect output from a child. Transitioning from
exit() to _exit() fixes this problem, and it's not necessarily a bad
idea to do this in post-fork() children without an execve() anyway.

Bug: chromium:949098
Change-Id: I5a6af0c2a09cd8eac9998358f6d5ea665288236f
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1575670
Reviewed-by: Mark Mentovai <mark@chromium.org>
2019-04-19 21:42:27 +00:00
John Z Wu ebab5970b0 Use correct c++ standard library in Xcode project.
This makes it build again for Xcode 10.

Change-Id: Ia28b8c0b131ac2862a8c17e223d1d7b1f0f59134
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1574177
Reviewed-by: Mark Mentovai <mark@chromium.org>
2019-04-19 14:19:05 +00:00
Mark Mentovai 232c45abee linux_core_dumper: add missing newline to Android test-disabled message
The [       OK ] LinuxCoreDumperTest.VerifyExceptionDetails line does
not appear at the beginning of a line, hiding it from Chromium’s test
infrastructure. This causes the test to have an unknown result, which is
treated as a failure.

https://ci.chromium.org/p/chromium/builders/try/android-kitkat-arm-rel/233129

Bug: google-breakpad:791
Change-Id: I0eb646a219fa40347db884fd28ace647328c5e49
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1558893
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2019-04-09 00:09:28 +00:00
Mike Frysinger 4d550cceca linux_core_dumper: partially disable test on Android
Running this test on android-kitkat-arm-rel fails for some reason:
[ RUN      ] LinuxCoreDumperTest.VerifyExceptionDetails
linux_core_dumper_unittest.cc:170: Failure
Expected: (0U) != (dumper.crash_address()), actual: 0 vs 0
linux_core_dumper_unittest.cc:178: Failure
Expected equality of these values:
  2U
    Which is: 2
  info.size()
    Which is: 0
[  FAILED  ] LinuxCoreDumperTest.VerifyExceptionDetails (7 ms)

Disable it for now on Android until someone can look into it.

Bug: google-breakpad:791
Change-Id: I40a5e3dbeeb44e5eb0df187e61d55e07d8ad3613
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1546778
Reviewed-by: Mark Mentovai <mark@chromium.org>
2019-04-07 14:08:29 +00:00
Mike Frysinger e2b3b80e43 linux_core_dumper: add explicit casts for exception fields
Some of the fields we save might have signed types depending on the
system (e.g. `typedef int pid_t`).  Depending on the toolchain, we
can trip -Werror=narrowing failures like:
src/client/linux/minidump_writer/linux_core_dumper.cc:248:66: error:
  narrowing conversion of ‘(__pid_t)info->siginfo_t::_sifields.siginfo_t::<anonymous union>::_kill.siginfo_t::<anonymous union>::<anonymous struct>::si_pid’
  from ‘__pid_t {aka int}’ to ‘long unsigned int’ inside { } [-Werror=narrowing]
             set_crash_exception_info({info->si_pid, info->si_uid});
                                             ^^^^^^
src/client/linux/minidump_writer/linux_core_dumper.cc:252:71: error:
  narrowing conversion of ‘(int)info->siginfo_t::_sifields.siginfo_t::<anonymous union>::_sigsys.siginfo_t::<anonymous union>::<anonymous struct>::_syscall’
  from ‘int’ to ‘long unsigned int’ inside { } [-Werror=narrowing]
             set_crash_exception_info({info->si_syscall, info->si_arch});
                                             ^^^^^^^^^^

Since the exception info fields are all uint64_t which should be large
enough to handle all the fields in the siginfo_t structure, add casts
for all the assignments to avoid these errors.  We have implicit casts
even without them, so we aren't changing behavior.

Bug: google-breakpad:791
Bug: chromium:945653
Change-Id: Ib04e015998f08b857159ac13e9a065a66d228d49
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1544862
Reviewed-by: Mark Mentovai <mark@chromium.org>
2019-03-30 03:52:15 +00:00
Mike Frysinger 8547289da5 linux_core_dumper: handle missing SIGSYS support
If the kernel/C library headers are old, they might not have the
fields needed for SIGSYS decoding.  Add ifdef checks for that and
skip the logic entirely.  Easier than adding arch-specific siginfo
structs to the codebase.

Bug: google-breakpad:791
Change-Id: Ia473e3ffa61fce4c42cf4c1e73a9df044599bc5c
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1524447
Reviewed-by: Mark Mentovai <mark@chromium.org>
2019-03-14 21:53:16 +00:00
Mike Frysinger 3ee9a0b274 linux_core_dumper: support setting exception_information
Many signals in Linux support additional metadata on a per-signal
basis.  We can extract that from NT_SIGINFO and pass it through
in the exception_information fields.

The current core dumper logic doesn't set exception_information
at all, so this is an improvement.

Bug: google-breakpad:791
Change-Id: I38b78d6494e9bc682441750d98ac9be5b0656f5a
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1497662
Reviewed-by: Mark Mentovai <mark@chromium.org>
2019-03-12 05:02:27 +00:00
Mike Frysinger 57f420bf7c linux_core_dumper: add a fallback definition for NT_SIGINFO
When building on an old system with outdated headers, this define
might not be available.  Add a fallback to our existing elf header.

Bug: google-breakpad:790
Change-Id: I4dfe7a5cebd414cca3582a1a9cfc983503d5a779
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1507073
Reviewed-by: Mark Mentovai <mark@chromium.org>
2019-03-07 05:58:16 +00:00
Mike Frysinger 59d89be2d6 linux_core_dumper: support NT_SIGINFO for reading crashing address
The current core dumper only parses NT_PRSTATUS notes.  With signal
details, this note only includes three fields: signo, code, and errno.
We set exception_code to signo and exception_flag to code.  The errno
value isn't set by the kernel, so there's no need to save it.

However, we never fill in exception_address which means all converted
crashes look like they happen at address 0.  This implies a NULL jump
which is usually not the case, so it's just confusing.  The prstatus
structure doesn't offer anything directly that tracks this.

Starting with linux-3.7, the kernel writes out the full siginfo
structure in the NT_SIGINFO note.  So lets support that to pull out
si_addr which, for a bunch of common signals, is the value we want in
exception_address.

The size of the siginfo_t structure should be locked to 128 bytes at
build time for all architectures, so this should hopefully be stable.

Bug: google-breakpad:790
Change-Id: I458bad4787b1a8b73fad8fe068e9f23bec957599
Reviewed-on: https://chromium-review.googlesource.com/c/1497661
Reviewed-by: Mark Mentovai <mark@chromium.org>
2019-03-03 17:39:36 +00:00
Nico Weber 2853d21e20 breakpad: Remove semicolons, iOS edition.
Bug: chromium:926235
Change-Id: I237e7b7d89e5746beea80754675a232c881f25f6
Reviewed-on: https://chromium-review.googlesource.com/c/1487336
Reviewed-by: Mark Mentovai <mark@chromium.org>
2019-02-25 21:43:47 +00:00
Nico Weber 30153b4eb5 breakpad: Remove semicolons, mac edition.
Bug: chromium:926235
Change-Id: I473a7727c1831717b92a582c50d98256ea41d854
Reviewed-on: https://chromium-review.googlesource.com/c/1482716
Reviewed-by: Mark Mentovai <mark@chromium.org>
2019-02-22 16:53:33 +00:00
Nico Weber 37a60998ca breakpad: Remove semicolons.
Bug: chromium:926235
Change-Id: I7f0795ebd651303b6f7fb6981c2f639e17a536bb
Reviewed-on: https://chromium-review.googlesource.com/c/1481232
Reviewed-by: Mark Mentovai <mark@chromium.org>
2019-02-21 15:43:19 +00:00
Andreas Haas a0e078365d Delete deprecated SetFirstChanceExceptionHandler function
This CL removes the code I marked as deprecated in
https://crrev.com/c/1411776. I could not delete the code in that CL
before I removed all uses in Chrome in https://crrev.com/c/1411643.

The tracking bug contains more information.

R=mark@chromium.org

Bug: chromium:921971
Change-Id: I77597826ef6e69a13ece529a5d24702bc72aa436
Reviewed-on: https://chromium-review.googlesource.com/c/1412353
Reviewed-by: Mark Mentovai <mark@chromium.org>
2019-02-19 22:12:01 +00:00
Andreas Haas 9b06049ed9 Introduce SetFirstChanceHandler with more strict signature
Eventually, I want to remove the current version of
SetFirstChanceHandler. That is why I changed the name of the current
callback type to FirstChanceHandlerDeprecated.

I also made sure that it is not possible to have two different
FirstChanceHandlers set at the same time.

This is the first of a set of CLs to clean up the API between Chrome,
BreakPad, and V8. See more information in the tracking bug.

R=mark@chromium.org

Bug: chromium:921971
Change-Id: Ia8c2fd9bd875c36dd7ae8bb4a02e538556bc67a1
Reviewed-on: https://chromium-review.googlesource.com/c/1411776
Reviewed-by: Mark Mentovai <mark@chromium.org>
2019-01-15 15:14:20 +00:00
Tom Tan b988fa74ec Extract intruction pointer correctly for Windows ARM64
Bug: 893460
Change-Id: Ibbdf734e72c29c4779b6a701dceec1626056a9ba
Reviewed-on: https://chromium-review.googlesource.com/c/1393763
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2019-01-03 00:10:28 +00:00
Evan Bernstein 315d1368a7 Adds method to get the date of the most recent iOS crash report.
Also adds method to determine if breakpad is started.

Change-Id: I272765e7ac6bbc07d77ca2d8dcc34d51c205116e
Reviewed-on: https://chromium-review.googlesource.com/c/1260625
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2018-10-08 16:40:19 +00:00
Joshua Peraza ee6f67d3b0 win: fix formatting after 21c98747
Change-Id: If50c3563fec7a8a9edf05c22f7d157201184df38
Reviewed-on: https://chromium-review.googlesource.com/1191671
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2018-08-27 20:58:44 +00:00
Joshua Peraza 21c9874722 win: replace a while loop with a for loop
This is the recommended resolution to warning C4127.
https://msdn.microsoft.com/en-us/library/6t66728h.aspx

Change-Id: Ifcffe68e21d9a6383bb9aef07503cbb034caca19
Reviewed-on: https://chromium-review.googlesource.com/1191661
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2018-08-27 19:44:50 +00:00
Mark Mentovai acf983292a Fix Windows client_tests GYP build after 88d8114fda
Bug: google-breakpad:770
Change-Id: I5539cda6053c39a11c354fba7f3e689ae02d3019
Reviewed-on: https://chromium-review.googlesource.com/1176126
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2018-08-15 18:25:08 +00:00
Joshua Peraza 88d8114fda Define and use a a new MDRawContextARM64
This struct matches the layout defined by Microsoft and replaces
Breakpad's MDRawContextARM64_Old. This CL updates the processor to
understand either the old or new structs, but clients continue to write
the old structs.

Change-Id: I8dedd9ddb2ec083b802723b9ac87beb18d98edbd
Reviewed-on: https://chromium-review.googlesource.com/1155938
Reviewed-by: Mark Mentovai <mark@chromium.org>
2018-08-01 19:27:25 +00:00
Joshua Peraza 627ef0cb9c Rename MDRawContextARM64 and its context flags
This makes way for the addition of a struct matching Microsoft's layout
for ARM64.

Change-Id: I115f25290863e7438852691d1ec3c9324a42f7a5
Reviewed-on: https://chromium-review.googlesource.com/1152158
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2018-08-01 19:26:38 +00:00
Joshua Peraza 948ce04ed7 mac: Fix broken xcode projects
Change-Id: I1cd8f0b0224c9b629dda720c11f6c081b175f8bd
Reviewed-on: https://chromium-review.googlesource.com/1157121
Reviewed-by: Mark Mentovai <mark@chromium.org>
2018-07-31 18:52:20 +00:00