Commit graph

1969 commits

Author SHA1 Message Date
Sim Sun c6d49c47a0 linux: Fix leak when the offset of memory_mapped_file is greater than 0
Breakpad should only map the file content after the offset instead of
the whole file. Mapping the whole file while only unmap 'file_len - offset'
would leak 'offset' bytes of mapping in virtual memory.

Change-Id: I10be4f929d969703a6a02c1f709d2a4ca86a6e9e
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2393468
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2020-09-05 02:52:36 +00:00
Sim Sun 039c4c9bbb Add a .clang-format file to give us local control over Chromium style.
Based on the. `clang-format` from chromium project
https://chromium.googlesource.com/chromium/src/+/HEAD/.clang-format

Change-Id: I9df4f5c917521b02b0cdc911f15c12102758f7e1
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2384071
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2020-08-31 18:46:34 +00:00
Nelson Billing 9c38ab7c67 Add native symbol uploads to Mac OS symupload tool.
- sym-upload-v2 protocol only.
- Supports elf, dwp, debug_only, macho, dsym, pe, and pdb (with the classic mode being called 'breakpad').

Change-Id: I68c0065aec3a7ffe29b364dd9e2e1dbdb58e3e5d
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2357528
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-08-17 22:31:50 +00:00
Sim Sun 62d9272419 linux: Fix segfault when there is no section header in ELF file
Some vendor library doesn't contain the section header. It causes
segmentation fault in `FindElfClassSection`.

> e_shoff:
> This member holds the section header table's file offset in bytes.
> If the file has no section header table this member holds zero.

Change-Id: Id98d6ff3bd16af4541deb5a55a8fad2fa74eda23
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2354427
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-08-15 05:28:45 +00:00
Joshua Peraza 087795c851 processor: subtract 1 from return pointers while scanning
Each stackwalker subtracts the size of an instruction
from a frame's instruction pointer to determine which
instruction it was executing. This should also be done
for pointers examined while scanning for likely return
addresses to ensure that those pointers don't point
past the end of functions.

Bug: b/118634446
Change-Id: I043e3f1e51a2c0a3d99ed14bf18ea64dc98add44
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2356649
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-08-14 17:26:39 +00:00
Nelson Billing 014e84252c Escape more characters in Mac OS sym-upload-v2 debug_file strings.
- Attempt to escape all characters which must be escaped in a URL or JSON string, for debug_file, since almost all of these are legal filename characters.

Change-Id: Ic7a9c1aef00093d164683be7db84f4f282f45f7a
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2339706
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-08-12 22:12:51 +00:00
Nelson Billing e3a62dc550 [Mac]Exit with unique status in symupload when file already exists.
- This change should also be made for other platforms.
- This allows users to tell the difference between upload succeeding, failing, and being skipped because the file already exists on server.

Change-Id: I0b404da7aac29e0a16346bbd816ad1c815985bce
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2341373
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-08-06 22:00:38 +00:00
Nelson Billing 3d8daa2c74 Fix sym-upload-v2 whitespace in filenames.
- Checking symbol status would fail for files whose names contained spaces, because the file name was being put in the URL unescaped.
- Now the filename is escaped before being put in URL when checking symbol status.

Change-Id: I3b989d877e0fd9aef57ec13bdbbb6c3dacb6a9e2
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2339782
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2020-08-05 19:42:38 +00:00
Nelson Billing a6218eb66d Fix v1 symupload protocol in Mac client.
- A printf's arguments got broken in refactor for v2 protocol (my fault).

Change-Id: I8018e25f55b18fd47038d28a4ff0ac3be3d2caae
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2333387
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-07-31 21:47:18 +00:00
Nelson Billing a740aa2625 Fix Mac symupload non-XCode builds.
Change-Id: Ic4924032faba83fc14f62feaac9a97bbfd0971ed
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2324311
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-07-29 23:30:33 +00:00
Sterling Augustine 28d7cbdd42 Check for tombstone as very first entry in the line table.
This is a folow up to
https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2317730

and handles the additional case where there are no entries in the line
table at all.

Change-Id: I100c5d0891e7dc7088d58da11240d7df3a6c48d9
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2321300
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-07-27 21:13:28 +00:00
Sterling Augustine 7d65240249 Properly handle new tombstone values that now appear as a result of the llvm change described at https://reviews.llvm.org/D81784.
Change-Id: I79dc5a72b651aa057104cd42b4773391df68125b
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2317730
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Nelson Billing <nbilling@google.com>
2020-07-24 21:34:14 +00:00
Nelson Billing 114336881a Port new symbol API to symupload on Mac.
- See documentation in Linux implementation commit: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1422400.

Change-Id: If3ff256e63f2db3ac9c0be78cfc17754d532cb88
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1497653
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2020-07-24 00:20:34 +00:00
Sterling Augustine 428a01e8de There are source files with APSL-2.0 as well.
Change-Id: I3640ee9374732e9e308c6264c702c9af942e85b3
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2303999
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2020-07-17 01:32:59 +00:00
Sterling Augustine 2e6f8deac0 Add 3-clause BSD license text as well.
Change-Id: I080a02c48b85bfe3ed32a3a2c9f17ad4061b2bde
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2304010
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2020-07-16 23:45:01 +00:00
Sterling Augustine 678c4c580b Include libunwind license in LICENSE file.
Change-Id: I53fa64deaf67746720c7baa7e22b3d7121076166
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2304009
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2020-07-16 23:17:42 +00:00
Mike Frysinger 721108fd54 fix NDEBUG breakage with new dwarf5 code
These fields are only used when NDEBUG is not defined.  We get build
failures with the current code like:
src/common/dwarf/dwarf2reader.h:181:12: error: private field 'string_buffer_length_' is not used [-Werror,-Wunused-private-field]
  uint64_t string_buffer_length_;

Change-Id: I01d6e29d31d50e29ed3736e7197e70455724ae48
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2299022
Reviewed-by: Sterling Augustine <saugustine@google.com>
2020-07-16 03:04:43 +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
Sterling Augustine a741027533 Add support for dwarf5 line tables.
Change-Id: I2c0cd0e7163502e52fbf0745b611befb2e219071
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2276193
Reviewed-by: Sterling Augustine <saugustine@google.com>
2020-07-14 00:46:58 +00:00
Sterling Augustine b6f36dd775 Move GetSectionByName out of CompilationUnit.
For the upcoming Dwarf5 LineInfo changes, we will need to get
several additional sections by name, but without a the Compilation
Unit. This change prepares for that.

Change-Id: I566855abb339a856110a2f7d243d3848fe2b3c18
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2268861
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-06-26 18:32:51 +00:00
Sterling Augustine 8efe0f1c3b Read dwarf5 compilation unit headers.
Change-Id: Ia85b2fb7b3cb821ad353a0003223d8b8465e792d
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2265259
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-06-25 21:56:34 +00:00
Sterling Augustine 72c118f4a6 Add and handle various dwarf5 addrx forms.
Given the almost nonexistent direct dwarfreader tests, I think
the best way to test these dwarf5 additions will be to add a full
dwarf5 compilation unit similar to the ones used incidentally in
the other tests. But I can't do that until enough dwarf5 is
correctly implemented.

Change-Id: I3418bda7212ae85c4b67232a2ab8fea9b9ca5d42
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2258838
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2020-06-24 20:39:58 +00:00
Sterling Augustine feb2dca989 Add and handle new dwarf5 string-related forms.
Adding the new forms by type and processing should avoid
the problems with 0c0e24f709,
where new forms weren't handled in switch statements, breaking
the build.

Testing this should follow the testing for DW_FORM_GNU_str_index,
very closely, but there doesn't appear to be any tests for that,
or even DW_FORM_strp.

Change-Id: I609d56b1dc879971bfef1070f063f8457fec6017
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2233839
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-06-22 23:39:36 +00:00
Michael Moss 2757a2c9c8 Make symupload exit with an error code when command-line parsing fails.
This should address the issue where some Chrome builds were failing to
upload symbols due to a bad command-line flag, but there was no
indication of a problem, and no build failure, because symupload was
exiting with a success code.

BUG=1091387
R=nbilling@google.com, wuwang@google.com

Change-Id: I0d7f1a6d689ca5fd37be3abad4c5ebc97f108e50
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2231574
Reviewed-by: Nelson Billing <nbilling@google.com>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2020-06-05 01:31:45 +00:00
Mikhail Borisov f2679262ac Avoid calling demangler for non-C++ symbols on Linux
Bogus demangler warnings should be suppressed on both Mac and Linux
platforms, so there is no reason to keep this filter behind __APPLE__ gate.

Bug: chromium:1062556
Change-Id: Idf28db0b527c3cd6dd91510fcf7d9040aaa64694
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2210684
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-05-26 18:57:18 +00:00
Yngve N. Pettersen 2ffe116322 mac: Don’t try to demangle non-C++ symbols with the C++ demangler
On Mac a C++ symbol has 1-4 underscore characters followed by a 'Z'.
Symbols that do not have this format (such as plain C symbols)
causes a lot of warnings to be printed.

Bug: chromium:1062556
Change-Id: I55977f756c7e20cc5e7b1cb8e38316d7bf1f748c
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2179482
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-05-05 12:18:53 +00:00
Joshua Peraza a7b621f810 processor: Bound number of exception parameters read
Bug: 1074532
Change-Id: I769074d7cbe0a47c8c8b716275d815e4b7f6dd63
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2168816
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2020-04-27 23:33:35 +00:00
Joshua Peraza a2d3e8b2d5 Use stdint.h numeric types in tests
Change-Id: Iaa79c5c7c70ca953256cd39cc9f6f4f139c696af
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2153567
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2020-04-16 19:25:06 +00:00
Joshua Peraza 1f15e4e3e4 Use portable format macros
Bug: 1071277
Change-Id: Ic65704a20c55fea83b5633650ee2c769ac227a56
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2153333
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2020-04-16 18:15:55 +00:00
Joshua Peraza 86bf444128 Use stdint.h numeric types
Change-Id: Ib815b0757539145c005d828080b92cbfa971a21b
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2141226
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
2020-04-09 00:09:40 +00:00
Michael Forney 5bba75bfd6 Remove true/false defines in convert_UTF.cc
These are left over from when this file was written in C.

In C++, true and false are keywords, so this is no longer necessary.
In fact, redefining a keyword is not actually permitted in ISO C++
(https://eel.is/c++draft/macro.names#2), and is rejected by MSVC.

Change-Id: I2f4a6eae7f8dd4d91b8ee6588c7ae5e8f20bd0d0
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2105831
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2020-03-19 03:19:55 +00:00
Michael Forney 23e6fbf571 Use ULONG_MAX instead of __WORDSIZE to determine native ELF architecture
__WORDSIZE is an internal libc definition. Instead, we can use
ULONG_MAX from limits.h, whose value corresponds to the machine's
native word size.

This allows us to remove the fallback definition of __WORDSIZE in
the Android compatibility headers.

Bug: google-breakpad:631
Change-Id: I7b9e6f3b2121f78ccad9e32bf26acac518aefd8f
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2107100
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2020-03-17 06:30:52 +00:00
Michael Forney 2633712387 Roll src/src/third_party/lss/ f70e2f164..fd00dbbd0 (2 commits)
https://chromium.googlesource.com/linux-syscall-support/+log/f70e2f1641e2..fd00dbbd0c06

$ git log f70e2f164..fd00dbbd0 --date=short --no-merges --format='%ad %ae %s'
2020-03-10 mforney Avoid conflict with getdents64 defined by libc
2019-01-26 vapier futex: change to 6 args

Created with:
  roll-dep src/src/third_party/lss

Bug: google-breakpad:631
Change-Id: Icc248237dcc7bdc3f7b74cd8556efcaf3b4b1c31
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2106526
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2020-03-17 01:52:33 +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 9de167a349 Remove sys/signal.h compatibility header
Since a03ad96dbd, sys/signal.h is no longer required.

Change-Id: I64e6235e1bffb3728d6050389bad6e7a99389741
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2097666
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2020-03-11 11:52:48 +00:00
Michael Forney 9bc5d7024f Add google_crashdump_uploader_test to .gitignore
Change-Id: I5c5e5c85ec49a76e5f4c7c6a0f662398e6cdc6ee
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2097681
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2020-03-11 11:50:39 +00:00
Michael Forney 98c883b5cf Remove redundant LINUX_HOST conditional
We are already in a LINUX_HOST conditional block, so there is no need
to check for it again.

Change-Id: Ifbe283ffa47373c98d2653f1014445d1a435c715
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2093144
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2020-03-11 11:49:47 +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 a0f647d7f3 Use ULONG_MAX instead of __WORDSIZE to determine ELF class
__WORDSIZE is an internal libc definition. Instead, we can use
ULONG_MAX from limits.h, whose value corresponds to the machine's
native word size.

Bug: google-breakpad:631
Change-Id: If69caf578286d678585d1510c01562b969b5061f
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2097352
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2020-03-10 23:31:09 +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
Michael Forney 3f6f16b059 Use sched_yield instead of pthread_yield
pthread_yield is not a standard POSIX function, and is not available
in musl libc. The man page says to "Use the standardized sched_yield(2)
instead"[0].

On glibc, pthread_yield is exactly equivalent to sched_yield[1].

On bionic, pthread_yield is also not available, so on Android, the
tests define a wrapper that just calls sched_yield. This wrapper
is no longer necessary if we just use sched_yield in the first
place.

[0] http://man7.org/linux/man-pages/man3/pthread_yield.3.html
[1] https://sourceware.org/git/?p=glibc.git;a=blob;f=nptl/pthread_yield.c

Bug: google-breakpad:631
Change-Id: Ie4c6be8c17cdc2f5396a7fe972fa51a97573b049
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2097340
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2020-03-10 22:49:56 +00:00
Mike Frysinger 4f3f0acd6f Revert "Add new dwarf 5 enums, plus some dwarf4 enums."
This reverts commit 0c0e24f709.

Reason for revert: This is causing breakage on CrOS due to unhandled
enums and dwarf5 support is in limbo, so pull this back out for now.

Bug: google-breakpad:812
Change-Id: I22dd5d87efb8bc83596d51d15a6808c41afb3fd2
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2095872
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-03-10 18:30:06 +00:00
Mike Frysinger fea1913f29 Revert "Add dwarf5 compilation-unit header handling."
This reverts commit dbd454dbe4.

Reason for revert: The parent CL is causing breakage on CrOS due to
unhandled enums.  Before we can revert that, we need to revert this.

Bug: google-breakpad:812
Change-Id: I7c2446f3cd8ed9f6411e90dbdd2434bc463b2f6c
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2095798
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-03-10 18:29:58 +00:00
Mark Mentovai 52b33b2a4b dump_syms: Reintroduce warnings inadvertently removed by 47cd498384
Previously, dump_syms produced warnings whenever a DW_AT_specification
or DW_AT_abstract_origin attribute was a forward reference. 47cd498384
allowed those attributes to carry forward references, removing the
warnings altogether. It was not correct to remove the warnings entirely.
References that do not point to valid DIEs should still produce
warnings, whether a back reference or a forward reference.

This reintroduces those warnings as appropriate.

Bug: google-breakpad:813
Test: dumper_unittest SimpleCU.UnknownAbstractOrigin,Specifications.BadOffset
Change-Id: Ie7222c7a1886bab31423f27e2fbcce93e69625b3
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2090103
Reviewed-by: Mike Frysinger <vapier@chromium.org>
2020-03-06 17:08:57 +00:00
Nelson Billing c7522272ff Add "type" option to sym_upload sym-upload-v2 mode.
- "sym-upload-v2" protocol now supports specifying a symbol file "type".
- Known types are "breakpad" (default option, previously this was only
effectively the only option), "elf", "pe", "macho", "debug_only", "dwp",
"pdb", and "dsym".
- When type other than breakpad is specified, sym_upload tool requires
the code_file and debug_id value (that it otherwise would have gotten
from the text of the Breakpad symbol file).
- This ultimately means that sym_upload can be used to upload native
symbol files now, in addition to Breakpad symbol files.

Change-Id: I3a331ba16f199d1d0025df735716ba5de298f522
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2078670
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-02-27 22:04:31 +00:00
Nelson Billing 815497495e Make LibcurlWrapper support static linking.
- Didn't used to support statically linked libcurl, now it does (like
HttpUpload does).

Change-Id: Ic014548225b129f0c1c9ffe6a671f5bd2352b6e6
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2068947
Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2020-02-22 00:03:09 +00:00
Joshua Peraza a4c536dc2d linux: fix symupload build failures
Change-Id: I58612eb70173d79c2aeb755d8c7f5677cb3a8fb8
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2067608
Reviewed-by: Nelson Billing <nbilling@google.com>
2020-02-21 18:37:25 +00:00
Joshua Peraza 5e1c53a442 android: truncate lower of two overlapping modules
Previously, the processor truncated the upper of two
overlapping module ranges to compensate for incorrect
reporting of module ranges by the Breakpad client.
Crashpad correctly reports module load ranges, so
this truncation strategy is no longer necessary.

However, when partitioned libraries are used, the base
library may have a range which encompasses the other
partitions. When this is combined with the truncate
upper merge strategy, the base library's executable
segment is truncated causing symbolization failures.

This patch changes Android's merge strategy to truncate
the lower range (which is still the base library, but
this strategy truncates from the high end of the
library's range, instead of its base).

Bug: b/149845120
Change-Id: Ic75ecd3e919432690740eb21ebd4265fc0bbaa86
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2067952
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-02-21 04:06:35 +00:00