Commit Graph

2098 Commits

Author SHA1 Message Date
Brian Sheedy
984e043d79 Print Crashpad annotation objects
Updates minidump_dump to print out any Crashpad annotation objects that
are in a minidump. If an annotation contains a string value, it will be
printed out as such, otherwise it will be printed out as hex bytes.

Bug: crashpad:329
Change-Id: Ieecd6381c623f9011b16357742f7145a118dbc3c
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4261631
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2023-02-16 19:10:15 +00:00
Xinan Lin
5f72a811c1 [linux] Report error message if failed to send http request
If symupload client failed to connect the backend, we need this error
message to be exposed. This could help the failure we are facing in
official staging builders.

BUG=chromium:1401761
TEST=NA

Change-Id: Ic720aff9cb523c38553d6c02bf72aa5b95e862a7
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4240299
Reviewed-by: Nelson Billing <nbilling@google.com>
2023-02-13 16:11:34 +00:00
Leonard Grey
5687ac51ca Fix Mac build
f617814017
missed marking `IsCanonicalAddress` Linux-only.

Bug: None
Change-Id: Ia936db4b5541f22abcc884d410e7eae3818b4c0f
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4227418
Reviewed-by: Mark Mentovai <mark@chromium.org>
2023-02-07 20:47:56 +00:00
Hiroyuki Komatsu
bc25ffb613 Change CLANG_CXX_LANGUAGE_STANDARD from "c++0x" to "c++17".
* This fixes build errors with `xcodebuild`.
* CLANG_CXX_LANGUAGE_STANDARD represents "-std" (e.g. "=std=c++17").

Change-Id: Ibeeccb2d77518d2e767a6cf4840ff673427d98ba
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4218220
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Nelson Billing <nbilling@google.com>
2023-02-06 21:30:05 +00:00
Mark Brand
38115b0c5f Refactor DisassemblerObjdump.
This change removes ScopedTmpFile from DisassemblerObjdump, and
replaces it with the use of the implementation in linux/common.

It also switches to using ScopedPipe to read the output from objdump,
and directly execing objdump instead of using system.

Change-Id: I6d425190fb4a20d6b265c72aa7315026687cb86a
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3971919
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2023-01-31 00:35:06 +00:00
Mark Brand
5daa41904a Add ScopedPipe.
This provides a similar wrapper to ScopedTmpFile for linux pipes.

Change-Id: I53b377085322f61d87525d215ecd703f13ae9ae7
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3971918
Reviewed-by: Lei Zhang <thestig@chromium.org>
2023-01-31 00:34:58 +00:00
Mark Brand
9a87ff661e Add ScopedTmpFile.
This replaces the existing AutoTestFile implementation with a simpler
implementation that uses O_TMPFILE to avoid having the temporary files
linked in the filesystem.

Refactor the existing tests to use the new ScopedTmpFile instead of
duplicating the same ScopedTestFile wrapper into each test.

Change-Id: Iee9416e52269eff271f748ec9d822aee6e28f59a
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3971917
Reviewed-by: Lei Zhang <thestig@chromium.org>
2023-01-31 00:34:48 +00:00
Mark Brand
f617814017 Remove disassembler_objdump from the build on non-linux platforms.
Change-Id: I29d628ac7cf79bfca1794ba325c945a0f122b360
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3964364
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2023-01-31 00:34:35 +00:00
Leonard Grey
95857a18bb Mac: add shell script to coordinate dumping and uploading macOS system symbols.
This checks in an edited version of a script that has been used by the
Chrome Mac team for this purpose. It expects to reside in the same
place as `dump_syms`, `dsc_extractor`[0], `symupload` and `upload_system_symbols` binaries.

When called, it will:
- Locate and extract any dyld_shared_caches found on the system
- Dump the above
- Dump any remaining uncached system libraries
- Write the results to a directory passed as an argument
- Provide (but not call) an `upload_system_symbols` invocation
to upload the results

[0] Not yet checked in

Bug: 1400770

Change-Id: I30610c23d0c979e34dd3830eeedb5ceeae8ce66b
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4111109
Reviewed-by: Mark Mentovai <mark@chromium.org>
2023-01-30 15:31:26 +00:00
Jason Jeremy Iman
bae713be2e LibcurlWrapper uses curl_global_cleanup
LibcurlWrapper is missing a curl_global_cleanup causing a memory
leak. The curl_global_init is called automatically when calling
curl_easy_init without first doing curl_global_init.

BUG=chromium:1405410
TEST=units with asan

Change-Id: I4982fd5265b0df91076ed428f1134a681a7f28c6
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4189295
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2023-01-27 20:36:21 +00:00
Justin Cohen
236743ed04 Update LICENSE file.
Change-Id: I36d77f3efb30bf83911e25b7f9de6cfe1cdb2e7e
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4199755
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2023-01-27 20:35:32 +00:00
Zaid Elkurdi
a4f148b7a5 Add support for reading annotation objects in Crashpad modules
At the moment, the Minidump class only supports reading simple and
list annotations from Crashpad minidumps. This change adds support
for reading annotation objects stored in Crashpad modules
(MDRawModuleCrashpadInfo) and exposes them via a new getter in
MinidumpCrashpadInfo.

Change-Id: I033fc4a4fdff5901babc2472e0150f79af56b830
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4195756
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2023-01-26 20:22:33 +00:00
Justin Cohen
2c86c995b4 Use portable PRIu64 for printing uint64_t address_mask.
Change-Id: I12b3970adc06cb48e9112726b423ab61271d0044
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4184479
Reviewed-by: Mark Mentovai <mark@chromium.org>
2023-01-20 21:27:48 +00:00
Justin Cohen
fc1a202855 Add address mask to MinidumpCrashpadInfo.
Support reading both old and new crashpad_info structs.

Change-Id: I780792988671683fedfbb5122fe8a14bf0a8b793
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3982824
Reviewed-by: Mark Mentovai <mark@chromium.org>
2023-01-20 19:24:04 +00:00
Lei Zhang
b024566c44 Fix Cygwin builds after enabling c++17 mode.
Remove the "noext" argument to AX_CXX_COMPILE_STDCXX(), so the configure
script can figure out what works, instead of only allowing strict
conformance mode.

See discussion on https://crrev.com/c/3954471, which lead to this CL.

Change-Id: I7688db2e267485003ae8f776fa3ca0dd63205b47
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4072453
Reviewed-by: Mark Mentovai <mark@chromium.org>
2023-01-19 18:04:53 +00:00
Leonard Grey
dd0ca9d70a Mac dump_syms: work around NXFindBestFatArch bug
On macOS 13 x86_64 machines, NXFindBestFatArch does not correctly find
arm64e slices. This is filed as FB11955188.

I was hoping manually masking the subtype with CPU_SUBTYPE_MASK would
be sufficient to work around but no luck. So let's just fall through
to doing an exact* match if NXFindBestFatArch fails.

* "Exact" meaning with CPU_SUBTYPE_MASK now masked off. But
libmacho/arch.c calls that exact too, so I'm just going to go with it.

Bug: 1400770
Change-Id: Id497946d3c719285c5d7508e589e4a466da1ceca
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4178621
Reviewed-by: Mark Mentovai <mark@chromium.org>
2023-01-19 16:09:17 +00:00
Leonard Grey
934d6b2a5d upload_system_symbols: Make /System/Library/Components optional
Bug: 1400770
Change-Id: I81cb981bb9ca208ac2af9e27c00e75cab1c14717
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4178413
Reviewed-by: Robert Sesek <rsesek@chromium.org>
2023-01-18 16:36:34 +00:00
Robert Sesek
bae7147e78 Decode Mach EXC_RESOURCE and EXC_GUARD exception reasons
Change-Id: Iafe85ae2149961f13ba44664c99e18d92d1ec654
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4172753
Reviewed-by: Mark Mentovai <mark@chromium.org>
2023-01-17 18:11:34 +00:00
Ian Barkley-Yeung
1eafed6806 Fix more memory leaks with proper smart pointer usage
Fix more memory leaks, specifically for Module::Extern and
Module::StackFrameEntry that were outside the Module's AddressRange.

To fix this, and to prevent issues like the one fixed by
79326ebe94
in the future, switched to proper use of std::unique_ptr for Module's
Extern and StackFrameEntry functions. These should enforce ownership
correctly and make the ownership flow much more visible and clear.

Change-Id: I7c943dff3501836a5e303febedc1b312e6f0a1fe
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4129821
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2023-01-10 18:46:49 +00:00
Leonard Grey
d91b6cb75a upload_system_symbols: Don't retry if file already exists on the server
Bug: 1400770
Change-Id: I4c9c683c91848f7eb404ff3c86187dfa63d06e37
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4117730
Reviewed-by: Robert Sesek <rsesek@chromium.org>
2023-01-04 13:40:20 +00:00
Ian Barkley-Yeung
79326ebe94 Fix memory leak in Module::AddExtern
If adding a duplicate extern, we need to `delete` the extra `Extern`
object regardless of the value of enable_multiple_field_.

Fixes ASAN build of ChromeOS:
https://logs.chromium.org/logs/chromeos/buildbucket/cr-buildbucket/8793433395207218433/+/u/run_ebuild_tests/chromeos-base_google-breakpad_log

BUG=b:263148951

Change-Id: Ib6c20e9c7aa38b1530e4bac8acbf481cc9136c36
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4129701
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-12-29 21:21:33 +00:00
Ian Barkley-Yeung
6e03dc0f20 Fix test breakage from 9aa786f
After
9aa786f03d,
attempts to roll breakpad into ChromeOS fail with:

make[1]: *** No rule to make target 'src/testing/googletest/src/gtest-all.cc', needed by 'src/testing/googletest/src/client_linux_linux_client_unittest_shlib-gtest-all.o'.  Stop.

(see
https://logs.chromium.org/logs/chromeos/buildbucket/cr-buildbucket/8794115289064657457/+/u/run_SDK_package_unit_tests/call_chromite.api.TestService_BuildTargetUnitTest/stdout,
the result of dry-running
https://chrome-internal-review.googlesource.com/c/chromeos/manifest-internal/+/5238479,
which just updates the breakpad revision to
b14bb95d5de268b6231dc8c667fb0f7d73676856.)

Change-Id: Ia6e47c044e74499a849f8b615594f403893d7653
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4120547
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-12-27 18:38:17 +00:00
Ian Barkley-Yeung
b14bb95d5d Handle compressed DWARF data in LoadDwarfCFI
Emit STACK CFI records even in the presence of clang's "-gz" linker
option. Needed for ChromeOS ARM boards' chrome binary.

BUG=b:263148951,google-breakpad:874
Fixed: google-breakpad:874

Change-Id: I2fe697a56d3421609128d4e291ab1adc73314864
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4117692
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-12-21 21:16:29 +00:00
Leonard Grey
80430d73ae upload_system_symbols: Fix sym-upload-v2 when uploading dumped symbols
This was previously setting the right upload servers too late to
use them when uploading previously dumped symbols (the
`--upload-from` use case)

Bug: 1400770
Change-Id: If5bb749707b9f0a181585619f30ec9cb011db5ed
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4111102
Reviewed-by: Robert Sesek <rsesek@chromium.org>
2022-12-15 22:21:20 +00:00
Zequan Wu
63af0cd752 Cleanup strncmp and use string_view in elf_reader.cc.
Change-Id: I74c755f1ade80bb4313e4fd14e5dc6bab419a0a6
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4099505
Reviewed-by: Mark Mentovai <mark@chromium.org>
2022-12-15 13:57:12 +00:00
Leonard Grey
6b7e8a80ba Mac dump_syms: delete unused WriteSymbolFile
Bug: None
Change-Id: I5aec8c07a01ee180c817fa79db39f9c2eb933e37
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4004598
Reviewed-by: Mark Mentovai <mark@chromium.org>
2022-12-14 19:37:46 +00:00
Leonard Grey
387a002c89 Add option to use API key in upload_system_symbols
Adds a new option, `-api-key`. If passed, `symupload` is invoked with
the `sym-upload-v2` protocol, the key is passed through, and the V2 API
upload servers are used.

Bug: 1400770
Change-Id: I81255dccc54038a57900058a050603b89e37d716
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4103749
Reviewed-by: Robert Sesek <rsesek@chromium.org>
2022-12-14 19:33:36 +00:00
Leonard Grey
33b8438986 Remove tools/mac/crash_report
This is pretty rotted and unmaintained, and nobody seems to be using it.

Bug: None
Change-Id: I965393dd75d995d5c7d55bea6d9b256e89a7421b
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4107469
Reviewed-by: Mark Mentovai <mark@chromium.org>
2022-12-14 18:42:38 +00:00
Zequan Wu
9acaa082c8 Fix build failures.
- Fix a test build failure introduced by cc7abac08b.
- Use strcmp from <string> instead of std::strcmp from <cstring>.

Bug: google-breakpad:867
Change-Id: I8dcbc7d5ac8ea799b4d5287ddbbf5d6626992123
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4095054
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-12-12 10:03:38 +00:00
Leonard Grey
cc7abac08b Add option to enable multiple symbol field in Linux tool
Bug: google-breakpad:751
Change-Id: I63a4d652413ef7311da7494fbd8fb816445eb353
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4089183
Reviewed-by: Mark Mentovai <mark@chromium.org>
2022-12-08 18:28:34 +00:00
Mike Frysinger
d31ce76161 gyp: drop unused build system
Chromium moved to GN a long time ago, and CrOS has never used this.
Let's remove one of the build systems to make it easier on people.
Especially since the GYP tool is completely unmaintained now.

Change-Id: I0371ca1427811f307dc30f88ed6d1bf61d7fab89
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4054941
Reviewed-by: Mark Mentovai <mark@chromium.org>
2022-12-05 01:38:54 +00:00
Leonard Grey
87b60390f0 Mac: add option to dump_syms to mark folded symbols
Bug: google-breakpad:751
Change-Id: I12afcc8399fa9808aace9f465622bd074eab13f4
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4034827
Reviewed-by: Mark Mentovai <mark@chromium.org>
2022-12-01 20:20:39 +00:00
Marvin Scholz
9aa786f03d Restructure Makefile conditionals/targets
As the conditionals and targets was becoming quite hard to
grasp with lots of conditionals applied unnecessarily to target
properties, there were issues with targets being defined without
any sources.
This commit fixes that while restructuring the Makefile so that
all targets are declared (conditionally if needed) upfront and
then all the target properties are defined (source, flags, deps, etc.)

Change-Id: I666d153c476fbf1aafabb89cee7af4eee5795ab6
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3928024
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-11-29 09:27:01 +00:00
Mark Brand
41474d905f Fix Linux ASan Afl build error.
Bug: 1385147
Change-Id: I69ebfa1adbc1c2a17decf0079812c4f507e3332c
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4046961
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-11-22 14:03:08 +00:00
Nelson Billing
4d0c21b9a5 Add a flag to google_converter to keep Breakpad/PE/PDB files after conversion.
Change-Id: I8948e1aba598d42369d70ca1cc1168ce3841ab40
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4038509
Reviewed-by: Zequan Wu <zequanwu@google.com>
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-11-21 20:47:11 +00:00
Nelson Billing
c7acbcef04 Fix Windows native symbol uploads.
- We were appending a CRLF to uploaded files, which is okay for Breakpad
  symbols but breaks binaries (PE/PDB).
- Removed the CRLF after files in the request body to fix issue. Tested with
  Breakpad, PE, and PDB uploads.

Change-Id: I95ee7c51bf981cdb2e55cc720a7813cf7afa21ce
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4038506
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Zequan Wu <zequanwu@google.com>
2022-11-21 20:46:50 +00:00
Leonard Grey
522bd2337a Speed up testing for multiple functions at an address on Posix
The way this was originally written blows up on large enough targets
(like...Chromium :/). This change adds a set for amortized constant
time lookup of whether a FUNC already exists at a given address.

Bug: google-breakpad:751
Change-Id: I10a322da70f769c106e1e5f5b2dc3dc3f79444fd
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4031580
Reviewed-by: Mark Mentovai <mark@chromium.org>
2022-11-17 18:38:51 +00:00
Lei Zhang
442456a68c Fix compile error in disassembler_objdump.cc for non-Linux build.
A couple of pointer parameters should be references instead.

Change-Id: Ic1850d9330194374f7fe2108815267ede6f3ca32
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4021971
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-11-14 22:12:41 +00:00
Leonard Grey
989f862134 Support marking folded symbols on Posix
This is similar to the Windows change at
https://chromium-review.googlesource.com/c/breakpad/breakpad/+/773418/

When a `Module` is created with `enable_multiple_field_` = true,
all FUNCs and PUBLICs that share the same address will be collapsed
into a single entry, and that entry will be marked with `m` for
multiple in the final output.

`enable_multiple_field_` is temporary just in case people are
depending on the current behavior.

Support for `dump_syms` executables will be added in a follow-up.

Bug: google-breakpad:751
Change-Id: I631a148ed00138924c7bcb5ad6db8b9a6610dd03
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3905122
Reviewed-by: Mark Mentovai <mark@chromium.org>
2022-11-01 16:53:01 +00:00
Christopher Di Bella
1f9903c161 names anonymous structs in elfutils.h
Fixed: chromium:1378800
Change-Id: I8215c091c72e796b1683753e2512d6e6adc4167f
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3984802
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-10-27 02:55:38 +00:00
Konstantin Mandrika
de086a9859 Add support for compressed section headers to dump_syms.
Change-Id: I019cc9ffd66850ec5259f6dfcd9af8ac6c37d2c0
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3938926
Reviewed-by: Manoj Gupta <manojgupta@chromium.org>
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-10-26 20:29:20 +00:00
mingtaoxt xt
7ea7ded187 mainline version gcc-13 cannot use "uintptr_t" via "#include <string>"
Change-Id: I0049bb92658b4226e32783ad4d8271787deef5f3
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3964166
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-10-20 09:36:42 +00:00
mingtaoxt xt
73c29370ce Update LSS dep to the latest commit
Change-Id: I39e459f519922433de82c62385d08c6db34328f0
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3964165
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-10-19 12:36:01 +00:00
Christopher Di Bella
b90119e3f3 replaces sizeof(raw_context) with sizeof(*raw_context)
Using `sizeof(raw_context)` generates the following warning (which is
an error in ChromeOS):

```
'memset' call operates on objects of type 'MDRawContextX86' while the size
is based on a different type 'MDRawContextX86 *'
```

This commit follows the implied advice of this warning and adjusts the
expression.

Bug: b:238678030, b:243982778
Test: Locally
Change-Id: I26111c6ff7a1223223e6096a75ad52c48d941e89
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3960915
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-10-17 20:41:17 +00:00
Christopher Di Bella
f9bf260e94 enables C++17 mode
Breakpad has started to use C++17 features, and needs to be compiled
using C++17.

Bug: b:238678030, b:243982778
Test: Locally, CQ
Change-Id: Ia339f0815d2efd2a49fa9b788044b5b0163f95fa
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3954471
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Manoj Gupta <manojgupta@chromium.org>
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2022-10-14 19:08:12 +00:00
Christopher Di Bella
ef443fbf77 Changes FunctionNames.Mangled to check for regex instead of equality
The demangled name has recently joined two angle brackets, where there
was previously a space. This commit makes it possible for both options
to pass, since they're both valid source.

Bug: b:238678030
Test: Tested locally
Fixed: b:243982778
Change-Id: Ic4464709fb8cc5c730a9d14a8627294b24ae70c3
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3949474
Reviewed-by: Lei Zhang <thestig@chromium.org>
2022-10-12 19:22:15 +00:00
Mark Brand
57d1743662 Fixup non-canonical fault addresses for amd64.
This uses DisassemblerObjdump to add a processing step in
MinidumpProcessor to compute the true faulting address from register
state and disassembly of the fault instruction when the fault address
is suspicious (-1).

Bug: 901847
Change-Id: Ia1f77d542c4055c82ce2504db8c84a9e52001866
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3932957
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2022-10-12 17:32:28 +00:00
Mark Brand
6289830b67 Add DisassemblerObjdump.
This extracts the existing objdump-based disassembler engine used in
ExploitabilityLinux into a seperate reusable class, and adds support
for most common address operand formats.

This is a precursor to using DisassemblerObjdump to handle address
resolution for non-canonical address dereferences on amd64.

Bug: 901847
Change-Id: I1a06a86fc2e7c76b4d0e79eca5f8a6c501379f47
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3720740
Reviewed-by: Ivan Penkov <ivanpe@google.com>
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2022-10-12 17:19:44 +00:00
Marvin Scholz
bcffe4fe60 test: exploitability: Fix preprocessor guards for Linux
Guard the Linux specific tests by checking for __linux__, as it does
not only not work on Windows but not on macOS either.
Change-Id: I0e710a6da8e6686f11bc8ea23e07ac19f3b4beb2
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3928026
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2022-09-30 12:24:06 +00:00
Leonard Grey
e3af4457b8 Clean up module_unittest
This change rewrites the tests to have `Module` as a prefix and
rearranges them a little. This is prep for adding this file to
breakpad_unittests Chromium-side.

Bug: google-breakpad:751
Change-Id: I8a77f60a0080d06af13dd30d9cf7627dce045d90
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3915004
Reviewed-by: Mark Mentovai <mark@chromium.org>
2022-09-22 19:52:43 +00:00