Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Fix some instances of -Wunreachable-code-aggressive. Bug: chromium:1066980 Change-Id: Ie95754402ce30bbd4bfcfc0c0150f07d2e3008f6 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3055796 Reviewed-by: Nelson Billing <[email protected]> * Add INLINE and INLINE_ORIGIN records to symbol file. The size of symbol file for chrome binary increased from 577 MB to 1205 MB. There are 7,453,748 INLINE records and 1,268,493 INLINE_ORIGIN records. Bug: 1190878 Change-Id: I802ec1b4574c14f74ff80d0f69daf3c81085778a Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2915828 Reviewed-by: Joshua Peraza <[email protected]> * Don't count str_offsets_table header size before DWARF 5 The header is not present in earlier versions of split dwarf. Change-Id: I8fde233268230cea157b2b3276f3cf05190962f2 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3083253 Reviewed-by: Sterling Augustine <[email protected]> * mac: conditionally generate inlines Change-Id: I35d7a5e50537bd6f20bcb5a91d386ffee9325b18 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3098093 Reviewed-by: Joshua Peraza <[email protected]> * mac dump_syms: fix -d option This is a follow-up to 3c70e0145e5c to make -d work. Bug: chromium:1190878,chromium:1238693 Change-Id: Ie0c6c663c98491462fca1aa992503037f19cefa9 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3103526 Reviewed-by: Joshua Peraza <[email protected]> * Remove usages of make_unique Building fails for some people because configure requires c++11 but make_unique is a c++14 feature. Change-Id: I23ce689fc92e9e90a95e7643ff29602f6b32ccbb Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3107784 Reviewed-by: Joshua Peraza <[email protected]> * Remove warning about unknown abstract origin Dwarf generated by Clang -g1 will not have DW_AT_inline attribute for some DW_TAG_subprograms even if they are inlined. This warning recently increased a lot (~ 3 million) due to DW_TAG_inlined_subroutine also complains about unknown abstract origin. It caused infra failure in building bots. Bug: 1241579 Change-Id: I9b5135925b71aa915760c140bcf73fc603bb77d3 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3111782 Reviewed-by: Joshua Peraza <[email protected]> * Modernize MinidumpCrashpadInfo::Print(). Use range-based for-loops where appropriate. Change-Id: I2fffd270d434c90850e8151ee40e5adf0736ce55 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3120666 Reviewed-by: Joshua Peraza <[email protected]> * Make INLINE_ORIGIN positions not important in symbol file This allows INLINE_ORIGIN records appears in after FUNC records. Change-Id: I69b8b5948ed91453e15c7f4c3888dfbe38e7bc5c Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3132381 Reviewed-by: Joshua Peraza <[email protected]> * Fix compiler errors found with -Wunreachable-code-aggressive. Break statements immediately following returns are unreachable. Bug: chromium:1246232 Change-Id: I0892a66617f7b27b5e317a7d9741f5fcd19249f2 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3140192 Reviewed-by: Robert Sesek <[email protected]> * Workaround Mac arch issue Temporarily works around an issue on Mac where the system version of NXGetLocalArchInfo is returning x86 information on x86_64 devices, which results in dump_syms failing on said devices. Instead, the Breakpad implementation of NXGetLocalArchInfo, which is meant for dump_syms_mac on Linux, will be used until the system version is fixed. Bug: 1242776 Change-Id: Id398338e580eb9c67c61f9f01670d2e7dbe86bea Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3143524 Reviewed-by: Joshua Peraza <[email protected]> * fix: minidump-2-core doesn't work for new arm64 dumps The app will check if process_architecture is ARM64_OLD which is 0x8003 but newman is a new arch which is ARM64 (0x12) We can fix the issue by checking both values Test: "/google/src/cloud/zyanwu/latest/google3/blaze-bin/chrome/dongle/platform/tools/minidump --crash_report_id=49ed111b84c0736e --crash_server=crash --build_number=265669 --build_branch=1.56 --product=newman-user --eureka_root=/usr/local/google/home/zyanwu/eureka --symbol_cache_dir=/usr/local/google/home/zyanwu/android/debug/symbols --debug" can work and it can convert the minidump to core dump then load gdb. Bug: 199144156 Change-Id: I1590a5b617e55ae8347aad426ba5b636ff6dcdfb Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3146740 Reviewed-by: Sterling Augustine <[email protected]> Reviewed-by: Nelson Billing <[email protected]> * Use -d flag enable procecessing DW_TAG_inlined_subroutine This change makes sure dump_syms process DW_TAG_inlined_subroutine only when -d flag is given, which save memory and time when -d is not given. Before this, it always processes DW_TAG_inlined_subroutine and -d determines whether or not to emit INLINE records. Bug: chromium:1250351, chromium:1246974 Change-Id: I54725ba1e513cafe17268ca389ff8acc9c11b25e Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3166674 Reviewed-by: Joshua Peraza <[email protected]> * Fix an uninitialized member variable in previous commit Change-Id: I83a2d026f1cef1771d28b420d76de17f0cf296ec Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3166678 Reviewed-by: Joshua Peraza <[email protected]> * Fix dump_syms memory leak It moves InlineOriginMap to module.h. Let Module keeps the global InlineOriginMap to easily get all referenced InlineOrigin when emitting. And release allocated memory inside its destructor. Verified that the symbol file with inline records for chrome is the same before and after this change. Change-Id: I7541aa05d3d2df0b9d52d670cab58241baecf20d Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3171638 Reviewed-by: Joshua Peraza <[email protected]> * Add missing const in AssignFilesToInlineOrigins method Change-Id: I3904d52e946158439899f4c5aaa92d1d15160745 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3183519 Reviewed-by: Ivan Penkov <[email protected]> * Add a string pool to store functions names - Added StringView which is used as a reference to a string, but doesn't own the string. - Removed the old string pool in DwarfCUToModule::FilePrivate, since it's doing string copy. - Added a string pool in Module to store functions/inline origins' names (mangled and demangled). - The peak memory usage drops from 20.6 GB to 12.5 GB when disabling inline records and drops from 36 GB to 20.3 GB when enabling inline records. Bug: chromium:1246974, chromium:1250351 Change-Id: Ie7e9740ea10c1930a0fc58c6becaae2d718b83b8 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3189410 Reviewed-by: Joshua Peraza <[email protected]> * Fix warnings in http_upload.cc with GCC The context arguments are of type DWORD_PTR which is actually a integer type, not a pointer, so using NULL here causes a type missmatch warning: error: passing NULL to non-pointer argument 8 [...] Change-Id: Ia52f51fd0cd33af3b139f0427dec6c59c2455d0a Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3168663 Reviewed-by: Primiano Tucci <[email protected]> * Fix StringView build After ff5892c5da86c50af1951328215a5a3a203a9bb1 added the new StringView, building fails with GCC 6 due to it apparently failing to properly find the type for nullptr_t resulting in the following error: In file included from ../src/common/module.h:49:0, from ../src/common/dwarf_cfi_to_module.h:49, from ../src/common/linux/dump_symbols.cc:59: ../src/common/string_view.h:55:27: error: field 'nullptr_t' has incomplete type 'google_breakpad::StringView' StringView(nullptr_t) = delete; ^~~~~~ ../src/common/string_view.h:42:7: note: definition of 'class google_breakpad::StringView' is not complete until the closing brace class StringView { ^~~~~~~~~~ This can be fixed by adding the std:: namespace to nullptr_t. Change-Id: I00a090d307ebe21d1143eac4a605ff319ce27048 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3201997 Reviewed-by: Joshua Peraza <[email protected]> * github: convert pull closing to GH actions The probot app we were using has been shutdown, so switch over to the new GH actions flow. Change-Id: Ifa8c2835e1ac1a4df53a5c4f0aa851fbacbd4096 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3217681 Reviewed-by: Mark Mentovai <[email protected]> * CI: convert Travis to GH actions With Travis shutdown, convert our flows over to GH actions. Change-Id: Ia4d358dbbf3d8a73c347f4b9e4cd4637ce44e594 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3216116 Reviewed-by: Mark Mentovai <[email protected]> * gtest: update to 1.11 release Keeps us in sync with Chromium a bit better. Change-Id: I4cb80f28fc3aa2e3d0cd8637dd2a5b1ff4ae633d Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3223799 Reviewed-by: Mark Mentovai <[email protected]> * ios/mac: Add exception code for Crashpad uncaught exceptions. Change-Id: I4c6a6fb353cacb09710c579e59332d70d1e801a8 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3093129 Reviewed-by: Mark Mentovai <[email protected]> * Fix errors in minidump_exception_mac and dwarf_cu_to_module_unittest Change-Id: I468f19048f6b48b230913e911d0da7a20d96cae8 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3222826 Reviewed-by: Mark Mentovai <[email protected]> Reviewed-by: Nelson Billing <[email protected]> * Fix building unittests failure caused by the introduction of StringView at https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3189410 Change-Id: I258863e5de6201bc24b53dbe50b4d2515d29e338 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3221513 Reviewed-by: Mike Frysinger <[email protected]> * Fix an instance of -Wshadow. Bug: chromium:794619 Change-Id: I7edb70a915ffb3c6f945dce77b0bd913e32e85eb Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3229392 Reviewed-by: Mark Mentovai <[email protected]> * Fix incorrect source file name for inlined frames Processor shows incorrect source file name if a frame have an inlined frame and their source files are different. Consider this example: FILE 0 /tmp/a.h FILE 1 /tmp/a.cpp INLINE_ORIGIN 0 0 foo() FUNC 1110 a 0 main INLINE 0 22 0 1110 7 1110 7 3 0 1117 3 23 1 When querying the address 0x1110, we know this line 0x1110 corresponds to /tmp/a.h line 3 and it's inside a inlined function foo() which is defined at /tmp/a.h and called at line 22. But we don't know at which file it's being called at line 22. So, we will get stacks like this: void foo() /tmp/a.h:3 int main() /tmp/a.h:22 The correct stacks should be this: void foo() /tmp/a.h:3 int main() /tmp/a.cpp:22 In this change: 1. Remove file_id field for INLINE_ORIGIN record. 2. Add call_site_file_id for INLINE record to represents the file where this call being inlined. After adding call_site_file_id to it (as third field), it looks like this: FILE 0 /tmp/a.h FILE 1 /tmp/a.cpp INLINE_ORIGIN 0 foo() FUNC 1110 a 0 main INLINE 0 22 1 0 1110 7 1110 7 3 0 1117 3 23 1 Bug: 1190878 Change-Id: Ibbb697d2f7e1b6ac3208cac6fae4353c8743198d Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3232838 Reviewed-by: Joshua Peraza <[email protected]> * Enable PA and BTI for breakpad Introduces Arm's Pointer Authentication and Branch Target Identification to breakpad. The changes are similar to changes for PA/BTI to Marl, see https://github.com/google/marl/pull/204 Bug: 1145581 Change-Id: I6a770316ad333bfcfad2ce7f3c1ff78afb35c010 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3226471 Reviewed-by: Primiano Tucci <[email protected]> * Revert "Fix incorrect source file name for inlined frames" This reverts commit 54d878abcb61623a71e5c2b5bb251e7f7fc8563d. 54d878abcb61 changed the dump_syms format incompatibly. This must be redone in a multi-step process: the processor must be made to understand the old and new formats simultaneously and the processor service must be rebuilt and run with that update before dump_syms output can change to use the new format. Bug: chromium:1263390 Change-Id: I5b6f8aff8ea2916b2c07ac6a74b569fa27db51b9 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3244775 Reviewed-by: Joshua Peraza <[email protected]> * Make processor compatible with both old and new format INLINE/INLINE_ORIGIN This is similar to the processor part of https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3232838/, but added compatibility to process both old and new format of INLINE/INLINE_ORIGIN records in symbol file. Old INLINE format: INLINE <inline_nest_level> <call_site_line> <origin_id> [<address> <size>]+ New INLINE format: INLINE <inline_nest_level> <call_site_line> <call_site_file_id> <origin_id> [<address> <size>]+ Old INLINE_ORIGIN format: INLINE_ORIGIN <origin_id> <file_id> <name> New INLINE_ORIGIN format: INLINE_ORIGIN <origin_id> <name> Change-Id: I555d9747bfd44a1a95113b9946dcd509b7710876 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3248433 Reviewed-by: Joshua Peraza <[email protected]> * Allow breakpad to read extended amd64 contexts Minidumps can contain extended, and compacted extended, contexts to include xstate data such as the state of the cet registers cetumsr and cetussp. Previously breakpad would reject dumps with contexts larger than expected. With this chage, breakpad now accepts and reads these minidumps. This change does not yet add processing for this extra data, but will allow any minidumps to be passed on to other processing tools, or be available for manual inspection. See chromium-review.googlesource.com/c/crashpad/crashpad/+/2575920 for motivation. Bug: 1250098 Change-Id: Id67649738ef1c7fb6308e05e6cd8fde790771cb2 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3256483 Reviewed-by: Robert Sesek <[email protected]> * Update Rust demangling to use rustc-demangle The rust-demangle-capi crate hasn't been updated since 2016 and out-of-date. Instead, Breakpad needs to use C API offered by the rustc-demangle to demangle Rust symbols. *** TESTING *** 1) Set up rustc-demangle > git clone https://github.com/rust-lang/rustc-demangle.git > cd rustc-demangle > cargo build -p rustc-demangle-capi --release 2) Breakpad > ./configure --with-rustc-demangle=<path to rustc-demangle> > make check src/common/dward_cu_to_module Change-Id: Ib68b62ef329f1397bc379a1d04c632781e4b2069 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3273324 Reviewed-by: Joshua Peraza <[email protected]> * Add missing config for encoding_util.h/m in iOS client project Change-Id: I448bc3d20e8b9bc091577e9c11bcb1603bff2588 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3236246 Reviewed-by: Mark Mentovai <[email protected]> Reviewed-by: Nelson Billing <[email protected]> * add DIR_METADATA settings Change-Id: I104e667a354591b35c50902dd84917910b90d2d2 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3301422 Reviewed-by: Mark Mentovai <[email protected]> * github: enable cron schedule Since GH is mirroring the code directly from our GoB systems, they aren't triggering push events. Set them up with a daily/weekly cron so we get some level of coverage. Change-Id: I9ececc74a4904e0e3060a10ee1acb952e2021240 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3289899 Reviewed-by: Mark Mentovai <[email protected]> * Limit Tokenize max_tokens to 512 when parsing INLINE record. This is a more practical reserved capacity than std::numeric_limits<int>::max() for the vector. Change-Id: Ic8d4e812c3804e4f15cc51650f7a91bae7313415 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3301419 Reviewed-by: Joshua Peraza <[email protected]> Reviewed-by: Lei Zhang <[email protected]> * Extend ContainedRangeMap and StaticContainedRangeMap This adds a new mode in ContainedRangeMap which allows existance of equal ranges. Among those equal ranges, the most recently added range is the innermost range. This also adds a function to ContainedRangeMap and StaticContainedRangeMap to allow users get a vector of entries that contains given address from innermost to outermost ranges. Change-Id: I84c1f2e49ffcaf8238df60e41498730103d1ead6 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3291137 Reviewed-by: Joshua Peraza <[email protected]> * Change Inlines in Function to be ContainedRangeMap that is easier to serialize. Change-Id: I565d41f7d629d7ea9b66cec6760686ca201994b3 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3294125 Reviewed-by: Ivan Penkov <[email protected]> Reviewed-by: Joshua Peraza <[email protected]> * Add serialization of inlines and inline origins for FastSourceLineResolver so that it can construct inlined frames later. Bug: 1190878 Change-Id: Ie3b0f2f44e04e790501ea54680fe223974c750ab Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3294126 Reviewed-by: Joshua Peraza <[email protected]> * Fix corrupted symbol file due to malformed INLINE/INLINE_ORIGIN records - Ignore DW_TAG_inlined_subroutine with empty range. - Don't stop parsing after parsing malformed INLINE/INLINE_ORIGIN records, because reports can still be generated without them but won't have inlined frames. Bug: 1190878 Change-Id: I445105ad06b9146268f7d064e85b0d162c3f2a39 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3321166 Reviewed-by: Joshua Peraza <[email protected]> * Fixing issues in the Breakpad symbol file serialization code. - FastSourceLineResolver::Module::LoadMapFromMemory now rejects an older version of the serialization format. - Cleaned up several unneeded usages of scoped_ptr::get. - Fixed the serialization of bool. The serialization code was using 255 for 'true' while the deserialization code was expecting to see 1. - Serialization for PublicSymbol.is_multiple was missing. Deserialization was expecting it - Added some logging to processor/source_line_resolver_base.cc Change-Id: Iadc7d8ee23bf3a07e4ea280d5d4c3f25f6278b69 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3324395 Reviewed-by: Joshua Peraza <[email protected]> * Fix RegisterValidFlag Return CONTEXT_VALID_NONE if register num is greater than 15 or negative. Change-Id: I7203d9d51f54e5d589f9ea6fd62bbbaa71de3a4d Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3336256 Reviewed-by: Joshua Peraza <[email protected]> * Add <call_site_file_id> to INLINE and remove <file_id> from INLINE_ORIGIN This is the dump_syms side change on https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3232838/. This fixes incorrect source file names when a inlined function's source file name is different from its parent's. Change-Id: I25683912d206c6a8db44e322eca5f7383ea8c47e Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3248438 Reviewed-by: Joshua Peraza <[email protected]> * Fix for non-constant SIGSTKSZ On glibc > 2.33, `SIGSTKSZ` might not be constant (in which case it expands to a call to `sysconf` which returns a `long int`); see https://sourceware.org/pipermail/libc-alpha/2020-October/118513.html Pass unsigned explicitly to std::max, to avoid relying on template argument deduction. This works both with the old-style constant `SIGSTKSZ` and the new configurable one. Initially based on https://chromium-review.googlesource.com/c/2776379 Change-Id: I9fc95337f973e871b84735ce822b5e11ba73ea8c Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3340721 Reviewed-by: Mark Mentovai <[email protected]> * mac: add go.mod for upload_system_symbols This was created by running “go mod init upload_system_symbols”. This is necessary for “go build” to work in recent versions of golang. Previously, errors such as this were produced: go: cannot find main module, but found .git/config in …/breakpad/src to create a module there, run: cd ../../../.. && go mod init Change-Id: Ia88834aec2eb8ee01db452889c525a5f6ebefa25 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3345400 Reviewed-by: Robert Sesek <[email protected]> * Add INLINE and INLINE_ORIGIN records on Windows dump_syms This adds INLINE and INLINE_ORIGIN records on Window dump_syms. It also adds more LINE records that represents the inner most callsite line info inside a function. Bug: chromium:1190878 Change-Id: I15c2044709f8ca831b03a453910d036f749452c6 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3133606 Reviewed-by: Lei Zhang <[email protected]> Reviewed-by: Joshua Peraza <[email protected]> Reviewed-by: Ivan Penkov <[email protected]> * Fix symupload build failure on Windows. - Make handle_inline default to false in PDBSourceLineWriter constructor. - Add --i flag for symupload to generate inline information. Change-Id: I3149173ee635a503b9508a12ef572f8b6e5c5dfe Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3364804 Reviewed-by: Joshua Peraza <[email protected]> * Match the return type of getopt(). getopt() returns an int, not a char. Bug: chromium:1287175 Change-Id: I9866112f7420b39ea470d9f04435ca328ab37ce0 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3387609 Reviewed-by: Mark Mentovai <[email protected]> * Fix reading DW_AT_ranges in dwarf 5 Bug: chromium:1285381 Change-Id: I8be6b0920e4d137a5d62283ce622669fa56bc417 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3389983 Reviewed-by: Joshua Peraza <[email protected]> * allow dump_syms to operate on contents in memory dump_syms assumes it is operating on a file and can access a compliant file system. This change allows dump_syms to operate on the contents of a file that has already been read into memory. This is useful in a server context where the file does not exist on the local file system. Change-Id: Id63f115c2df287083d548dadd5ac487f97bde057 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3327644 Reviewed-by: Mark Mentovai <[email protected]> * namespace implementations of FileID In trying to create a backend service that can process both ELF and Mach-O binaries, I found that symbol collisions occur when trying to link different implementations of FileID. This change puts the different implementations into separate namespaces to avoid the collision. Change-Id: I15aabb222803f2ffbda15ed13e66793bae32ddce Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3421417 Reviewed-by: Mark Mentovai <[email protected]> * Make symupload v2 api respect --timeout flag Change-Id: I763f45aa395a56e9c3285544e7755a1e5a85dbe4 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3422007 Reviewed-by: Nelson Billing <[email protected]> Reviewed-by: Joshua Peraza <[email protected]> * Fix corner cases on Windows dump_syms - don't do iter decrement when the map empty. - add dummy file with id equals to 0 to represent unknown file. Change-Id: I3fe55a459c9fa835bbe0c4272e4ac12b1150c034 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3425732 Reviewed-by: Joshua Peraza <[email protected]> * The X86 stack walker was doing an illegal down cast from base-class (StackFrame) to derived-class (StackFrameX86). Inline frames are always of the base-class type (StackFrame). Treating them as derived-class and accessing members was causing heap buffer overflows. Change-Id: Id4122ab6a31f016933038a1cb63d45d5c38481f5 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3425445 Reviewed-by: Joshua Peraza <[email protected]> * include memory header when using unique_ptr This is to fix build error on Windows. Bug: chromium:1294084 Change-Id: I8e6a2e46d53d6f5b02343b81cfaa078580a8326d Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3438886 Reviewed-by: Joshua Peraza <[email protected]> * Add support for product_name in Mac sym_upload v2 Change-Id: I6fab9f62434fd19eb7aea4a66f0dd809af57e595 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3436859 Reviewed-by: Nelson Billing <[email protected]> Reviewed-by: Mark Mentovai <[email protected]> * github: update to latest coverity scan action This simplifies the action code a bit. Change-Id: Ibd6ce393ab2d09b0b6e91cecb3a78a33a18de7c0 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3443961 Reviewed-by: Joshua Peraza <[email protected]> * Fix missing <memory> header for Windows dump_syms Change-Id: Ia58efa4ec5b30f644f8114eab85ef589271291dd Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3271972 Reviewed-by: Nelson Billing <[email protected]> Reviewed-by: Mark Mentovai <[email protected]> * Populating is_multiple in google_breakpad::StackFrame from symbol files. This is needed in order to properly detect and highlight frames that correspond to multiple functions, for example as the result of identical code folding by the linker. Bug: google-breakpad:751 Change-Id: I2ee7c147fcff6493c2454383ad5422b38269759a Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3471034 Reviewed-by: Joshua Peraza <[email protected]> * Fix table formatting of symbol_files.md Change-Id: I4c5d2e2d77d27204fdc71d6720ea91abe18fb706 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3485498 Reviewed-by: Lei Zhang <[email protected]> * Fix another table formatting issue in symbol_files.md This looked fine in the source but gitiles is very particular about its table syntax. Change-Id: I9ca8d61a5ca9656bc4f62297861540473485091a Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3485499 Reviewed-by: Lei Zhang <[email protected]> * Never use frame pointer unwinding on a Windows x64 stack. MSVC never generates code that works with frame pointer chasing, and LLVM does the same. Change-Id: I9943160d200509c079fb91394c1a5d789dc188e5 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3486523 Reviewed-by: Mark Mentovai <[email protected]> * Support for leaf functions which don't touch any callee-saved registers for Windows x64 stacks. According to https://reviews.llvm.org/D2474, LLVM does't generate unwind info for leaf function which doesn't touch any callee-saved registers. According to MSDN, leaf functions can be unwound simply by simulating a return. Change-Id: Ic0503e2aca90b0ba5799133ea8439f1b5f2eefda Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3489332 Reviewed-by: Mark Mentovai <[email protected]> Reviewed-by: Joshua Peraza <[email protected]> * Add doc for INLINE and INLINE_ORIGIN records in symbol file Change-Id: Iacf98d4e1a6f4c75e552eaa879f330be7976547e Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3268351 Reviewed-by: Joshua Peraza <[email protected]> * Better identification of context frames. Since the introduction of inlined frames, it is not sufficient to check the stack trace length (== 1) in order to identify context frames. Updating all location that were depending on this assumption to check for frame trust level instead. Change-Id: I98f966889367c2270c268b8e78b67418c89c50f1 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3499020 Reviewed-by: Mark Mentovai <[email protected]> * Add docs for INLINE and INLINE_ORIGIN in overview Change-Id: I16b2de126efc3a7df5a70086c036f2f77add952a Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3523703 Reviewed-by: Joshua Peraza <[email protected]> * Set use_async_processing in mac symupload. Change-Id: I9192aed92cc3ee85c6fdce54cbf51414338d7b99 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3558027 Reviewed-by: Ivan Penkov <[email protected]> * Set use_async_processing in windows symupload. Change-Id: If9cc629a44b8c05e4be55d765800c239c47e076c Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3554917 Reviewed-by: Ivan Penkov <[email protected]> * Fix build with Windows 10 20348 SDK Bug: chromium:1292528 Change-Id: Iaee784fe3992725086636dddb5f73d7e1373e7d7 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3558794 Reviewed-by: Ivan Penkov <[email protected]> * [dump_syms] Fix DW_AT_specification warning on Mac. 1. Visit DW_TAG_class_type when it's inside DW_TAG_subprogram. 2. Only warn when we can't get the name for the DIE and it has DW_AT_specification that is not in the specification map. Bug: 1078932 Change-Id: Id3126aec305658f8f65c01675a8e9e3ea03f3651 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3579855 Reviewed-by: Joshua Peraza <[email protected]> * avoid dump_syms crashing if selected arch is not found https://crrev.com/c/3327644 introduced the ability for dump_syms to operate on in memory data, which has the consequence of not going through the same input validation as the dump_syms cli tool. In certain cases, it is possible that architecture info can't be reliably determined, e.g. new architectures that breakpad is unware of. In that case, dump_syms should avoid crashing when calling ReadSymbolData and return false instead. Change-Id: Ie9acdf811300084f1d5916f4778754f8abca10e0 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3572251 Reviewed-by: Ivan Penkov <[email protected]> * Support PE modules in core files when running core2md Core files generated from `wine` contain both ELF and PE modules. Module format can be guessed by checking the file contents. If the module corresponds to PE-file conditions (has specific fields set up as described in https://code.google.com/archive/p/corkami/wikis/PE.wiki) we'll create a MDCVInfoPDB70 record in the minidump for it, but if the file cannot be opened, is too short or is not a PE file, we'll fall back to ELF procedure. Added /src/client/linux/minidump_writer/pe_file.{cc,h} to src_client_linux_libbreakpad_client_a_SOURCES and src_client_linux_linux_client_unittest_shlib_SOURCES. Makefile.in and aclocal.m4 were generated by running 'aclocal && automake'. Test: build core2md and use it to convert a core file into dmp, validate that the generated dmp file can be opened. Ran './configure & make'. Change-Id: I225ffeea3f582deed40ecdfe7ab77f5754e90cbe Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3629189 Reviewed-by: Joshua Peraza <[email protected]> * Make sym-upload-v2 windows code shareable. Change-Id: I228c93655203977b27052a85705c42bafef1e1ef Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3656055 Reviewed-by: Ivan Penkov <[email protected]> * Migrate google_converter to v2 upload API. Change-Id: If045809cfa3a3601b93725b6b2b45089e7558eb3 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3657059 Reviewed-by: Ivan Penkov <[email protected]> * Add symbol type option to SymUploadV2ProtocolSend. Change-Id: Ia2eadae56c7f879ddb2212e4018024a5c04634aa Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3670054 Reviewed-by: Ivan Penkov <[email protected]> * Upload native symbols from google_converter. Change-Id: I4b636ccb1dc536ad63b0995994057fe1874f4ee6 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3681980 Reviewed-by: Ivan Penkov <[email protected]> * Look for http redirection errors from SymSrv in google_converter. Change-Id: Ic793f2a5baceb342154c995c43bf60b6f57612a5 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3689705 Reviewed-by: Ivan Penkov <[email protected]> * [breakpad] Add MINIDUMP_THREAD_NAME_LIST support Change-Id: I84205358ae48e757fa3b836747eadc32c2671756 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3690389 Reviewed-by: Joshua Peraza <[email protected]> Reviewed-by: Ivan Penkov <[email protected]> * Revert "Support PE modules in core files when running core2md" This reverts commit 0808030bee8bc88a34675cd1dd83b965a2249a08. Reason for revert: Breaks Android Compile ld.lld: error: undefined symbol: google_breakpad::PEFile::TryGetDebugInfo(char const*, google_breakpad::_RSDS_DEBUG_FORMAT*) >>> referenced by minidump_writer.cc >>> client/minidump_writer.o:((anonymous namespace)::MinidumpWriter::FillRawModule(google_breakpad::MappingInfo const&, bool, unsigned int, MDRawModule*, unsigned char const*)) in archive obj/third_party/breakpad/libclient.a https://ci.chromium.org/ui/p/chromium/builders/try/android-marshmallow-arm64-rel/1188618/overview Original change's description: > Support PE modules in core files when running core2md > > Core files generated from `wine` contain both ELF and PE modules. Module > format can be guessed by checking the file contents. If the module > corresponds to PE-file conditions (has specific fields set up as > described in https://code.google.com/archive/p/corkami/wikis/PE.wiki) > we'll create a MDCVInfoPDB70 record in the minidump for it, but if > the file cannot be opened, is too short or is not a PE file, we'll > fall back to ELF procedure. > > Added /src/client/linux/minidump_writer/pe_file.{cc,h} to > src_client_linux_libbreakpad_client_a_SOURCES and > src_client_linux_linux_client_unittest_shlib_SOURCES. > Makefile.in and aclocal.m4 were generated by running 'aclocal && automake'. > > Test: build core2md and use it to convert a core file into dmp, validate > that the generated dmp file can be opened. Ran './configure & make'. > > Change-Id: I225ffeea3f582deed40ecdfe7ab77f5754e90cbe > Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3629189 > Reviewed-by: Joshua Peraza <[email protected]> Change-Id: I7105ed615a338263f112243bd8dc9e86b906fcb1 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3695862 Reviewed-by: Ivan Penkov <[email protected]> * Remove usage of sprintf in dwarf_cfi_to_module. sprintf is marked as deprecated with Xcode 14. Bug: 1331345 Change-Id: Ic301134ec0c5e7b9ee9d590ab1423491aad5ccf7 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3692036 Reviewed-by: Ivan Penkov <[email protected]> Reviewed-by: Mike Frysinger <[email protected]> * Reland "Support PE modules in core files when running core2md" This is a reland of commit 0808030bee8bc88a34675cd1dd83b965a2249a08 Original change's description: > Support PE modules in core files when running core2md > > Core files generated from `wine` contain both ELF and PE modules. Module > format can be guessed by checking the file contents. If the module > corresponds to PE-file conditions (has specific fields set up as > described in https://code.google.com/archive/p/corkami/wikis/PE.wiki) > we'll create a MDCVInfoPDB70 record in the minidump for it, but if > the file cannot be opened, is too short or is not a PE file, we'll > fall back to ELF procedure. > > Added /src/client/linux/minidump_writer/pe_file.{cc,h} to > src_client_linux_libbreakpad_client_a_SOURCES and > src_client_linux_linux_client_unittest_shlib_SOURCES. > Makefile.in and aclocal.m4 were generated by running 'aclocal && automake'. > > Test: build core2md and use it to convert a core file into dmp, validate > that the generated dmp file can be opened. Ran './configure & make'. > > Change-Id: I225ffeea3f582deed40ecdfe7ab77f5754e90cbe > Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3629189 > Reviewed-by: Joshua Peraza <[email protected]> Change-Id: I09dd067a39a95f81f48656595e811c263561ebf2 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3695863 Reviewed-by: Joshua Peraza <[email protected]> * Ignore failure in recovering optional registers Evaluating CFI rules may fail due to e.g. the unavailability of the memory or some register values. Failures in recovering registers other than CFA or return address can be ignored because they are optional. Bug: fuchsia:102034 Change-Id: Ia1d8bdb12766e32b5445b49d353fc71c63ab73e7 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3701260 Reviewed-by: Joshua Peraza <[email protected]> * dwarf_cu_to_module_unittest: fix tests https://crrev.com/7933ec0a69bac134b7cee4b60a5dc80743b2b1a9 removed warnings about unknown abstract origins, which caused these tests to fail on ChromeOS. Update these tests to reflect the code changes in said CL. Bug: b:235999011 Change-Id: Ifa450d33080d955d33b3aadb951c2e75c0aa1c85 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3723686 Reviewed-by: Mike Frysinger <[email protected]> * elf_core_dump_unittest: skip test if setrlimit will fail Some systems have constrained rlimits for core files (the CrOS chroot is an example of this). Fail gracefully in this case, rather than breaking the user's tests. Bug: b:235999011 Change-Id: I5649b42d3e6fd9b4f9b11e1fd9d0d4a1083d300f Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3722724 Reviewed-by: Mark Mentovai <[email protected]> Reviewed-by: Mike Frysinger <[email protected]> * module_unittest: fix use-after-free `Construct.FunctionsWithSameAddress` started failing at ff5892c5. It looks like the cause of this is in the calls to `generate_duplicate_function`: ``` generate_duplicate_function("_without_form"); generate_duplicate_function("_and_void"); ``` `generate_duplicate_function` directly calls `new Module::Function(...);`, which stores the `StringView` it's given. `generate_duplicate_function` currently takes a `const string &`; in the above statements, these strings get `free()`d at the `;`. Making the parameter a `StringView` means the `Module::Function` will store pointers to the string literal, which lives for the whole program. All calls to `generate_duplicate_function` are given literals. Bug: b:235999011 Change-Id: Ied04c1307a2467b9816a83f0c4d84d47779ec610 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3726855 Reviewed-by: Mike Frysinger <[email protected]> * dwarf_cu_to_module_unittest: remove expectation This expectation started failing at 8b68c72a3fff2bb687c7f411e5c1c09e356b8603. Remove it. This is the only expectation that exists in this test, but the test may be useful for internal asserts performed in the code under test. Bug: b:235999011 Change-Id: Iab5c073161ce66fdf362b7da31c19f471c7a79bf Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3727478 Reviewed-by: Mike Frysinger <[email protected]> * Added a missing dependency on android/google_breakpad/Android.mk pe_file.cc, used in minidump_writer.cc, was not included in LOCAL_SRC_FILES. This caused breakpad to fail in build time, as it didn't find the file. Tested using ndk 21.4.7075529, building on an arm64 device. Change-Id: I192539a52c1344eba9999c6780bcd8b83ea7e772 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3723683 Reviewed-by: Joshua Peraza <[email protected]> * update autotool minimum versions We're using autoconf-2.69 (from 2012) now and not testing anything older, so raise the min version to that. Also bump to automake-1.13 (from 2012) to keep a bit inline. Change-Id: I903144f214fef835364474e1607a26e846c99ff6 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3734168 Reviewed-by: George Burgess <[email protected]> * regen autotools Previous updates to these were partially done. Rerun with the right versions of autoconf-2.69 & automake-1.16.5. Change-Id: Ifd6c8405b0b50c5d3cf4ea536a7db5762d62644e Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3734167 Reviewed-by: George Burgess <[email protected]> * simplify enable & with configure flags Leverage the existing default logic & argument parsing that turn the values yes/no into true/false to simplify the code so we don't create duplicate variables. This kills a lot of boilerplate. Change-Id: Ib7c8e00f7b23e67ed05f3b35e523c235aed41129 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3734169 Reviewed-by: George Burgess <[email protected]> * Handle abbrev entities being out of order. There are cases where the debug_abbrev entities are not sequential, for example, in Xamarin system dlls. This change gracefully handles such a case. Change-Id: Ib270393d3cf9fd18efd99d15d0fba4f96748188a Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3738879 Reviewed-by: Joshua Peraza <[email protected]> * configure: support rustc-demangle installations in the sysroot Currently, `./configure` supports `--with-rustc-demangle=${path_to_crate_root}` as the only mechanism to enable rustc-demangle support. This CL adds support for cases where keeping or synthesizing a full `cargo` build tree is hacky in comparison to simply installing `rustc_demangle.h` in e.g., /usr/include, and putting `librustc_demangle.a` in e.g., `/usr/lib64`. Bug: b:235999011 Change-Id: Id5fe2a24c4b6e33c4df0e10c86ba99c7cf890ab2 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3733672 Reviewed-by: Mike Frysinger <[email protected]> * dwarf2reader: include <algorithm> On CrOS, a breakpad update is breaking: ``` google-breakpad-2022.07.03.054510-r210: no member named 'sort' in namespace 'std' google-breakpad-2022.07.03.054510-r210: std::sort(abbrevs_->begin(), abbrevs_->end(), google-breakpad-2022.07.03.054510-r210: ~~~~~^ ``` Looks like we're missing the include for `sort`. Bug: 235999011 Change-Id: I917389c12b370357fd1fc7cb08af0b9d7f315c84 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3741510 Reviewed-by: Mike Frysinger <[email protected]> * exploitability: fix buffer overflow exploitability_linux assumed a 15 byte buffer to always be passed in as `raw_bytes` for `DisassembleBytes`. This test was passing in a 6 byte buffer. Make `DisassembleBytes` accept a length. Bug: b:235999011 Change-Id: I696c66357faa1c7d762c64009864123897f03488 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3756170 Reviewed-by: Mike Frysinger <[email protected]> * crashdump_uploader: fix memory leaks & use-after-frees These `GoogleCrashdumpUploader` instances need to be cleaned up; place them on the stack. Doing this unmasks another bug in this code: the `MockLibcurlWrapper` instance we're passing into these `GoogleCrashdumpUploader`s becomes owned by the `GoogleCrashdumpUploader` in question. Putting them on the stack makes `free()` unhappy when the `GoogleCrashdumpUploader` they're given to gets destructed. Bug: b:235999011 Change-Id: I5d0424a1c09d32ea34a8fa6f5e52d3695ee6e857 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3756172 Reviewed-by: Mike Frysinger <[email protected]> * stabs_to_module: fix memory leak Everything in `functions_` is owned by the current `StabsToModule`. If we fail to add something from `functions_`, we need to be sure to dispose of it properly, since `module_` will not take ownership. Bug: b:235999011 Change-Id: I3b965709ea2016a065b50588f4132d14a1de7725 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3756733 Reviewed-by: Mike Frysinger <[email protected]> * module_unittest: fix memory leak `AddFunction` only takes ownership of the pointer passed to it if it returns true. Since it returns false when adding `function2`, we need to free it. Bug: b:235999011 Change-Id: I11984103c2c153ff0daf2c9690f9c88d04a2131b Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3756732 Reviewed-by: Mike Frysinger <[email protected]> * stackwalker_mips64_unittest: default-init MIPS context This test's constructor fails to fully initialize this raw context. As a result, we have at least one use of uninitialized memory in CFI.At4004. This causes said test to fail under ASAN. Bug: b:235999011 Change-Id: I3279da8ac3414eb8c90f3949a1db47a03e750a94 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3756749 Reviewed-by: Mike Frysinger <[email protected]> * exploitability_linux: fix mismatched comparison warning On ARM, this write fails to build: comparison of integers of different signs: 'ssize_t' (aka 'int') and 'const unsigned int' [-Werror,-Wsign-compare] Since we check that it's <= 15 above, we can simply cast it without issue. Bug: b:235999011 Change-Id: Id75fc0df74e88b347df615df06567e96c6b59a1d Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3758800 Reviewed-by: Mike Frysinger <[email protected]> * {static_,}range_map: fix overflows under ubsan Explicitly call out where overflows are expected, and add appropriate checking for them. BUG=b:235999011 TEST=Unittests on CrOS and Linux Change-Id: I999a6996183c2f4afc16a1c0188dee3bd64d7f09 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3759630 Reviewed-by: Mike Frysinger <[email protected]> * Adds fastfail subcodes as distinct failure reasons Previously these all resulted in EXCEPTION_STACK_BUFFER_OVERRUN but this hides various specific fast fail crash types, which are now provided based on the exception's subcode. Tests: added to minidump_process_unittest.cc Bug: 865632 Change-Id: Ic6693de247da55cf6d132d108c6e20c635f366b1 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3771437 Reviewed-by: Robert Sesek <[email protected]> * arm64: don't interpret DW_CFA_GNU_window_save DW_CFA_AARCH64_negate_ra_state uses the same encoding as DW_CFA_GNU_window_save. It is meant to indicate that x30/LR has been signed, but breakpad does not require this information. Bug: b/239086293 Change-Id: I5a17bd5e0673a3ff80a8c6e347013d66054314e8 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3781136 Reviewed-by: Mark Mentovai <[email protected]> * Mac dump_syms: Fix -a on arm64 - Resets `selected_object_file_` when a new file is read. This was a dangling pointer previously. - When `-a` is provided, ensures that both parts of a split module use the given architecture. Bug: None Change-Id: I581d41b0eee4ec2b0d598fb80b9065e7ebde0e0d Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3788222 Reviewed-by: Mark Mentovai <[email protected]> * arm64: strip PACs from return addresses found from CFI Bug: b/239086293 Change-Id: I8b514e8640f0f2496cea8d0b516124c0e3a3b81a Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3788698 Reviewed-by: Mark Mentovai <[email protected]> * Add error messages on pdb Open function This implements the error messages from https://docs.microsoft.com/en-us/visualstudio/debugger/debug-interface-access/idiadatasource-loaddataforexe?view=vs-2022 and https://docs.microsoft.com/en-us/visualstudio/debugger/debug-interface-access/idiadatasource-loaddatafrompdb?view=vs-2022 instead of having just a generic error message. Signed-off-by: Lorenzo Alberto Maria Ambrosi <[email protected]> Bug: https://bugs.chromium.org/p/google-breakpad/issues/detail?id=866 Change-Id: I23c0e80d31afb402a70cb0cdded78d3d34ac5fff Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3810512 Reviewed-by: Mark Mentovai <[email protected]> Reviewed-by: Mike Frysinger <[email protected]> * Check sh_type for symbol table and finish ProcessDIEs if any DIE processing goes wrong - If symbol table section is malformed, skip them. - SkipDIE and ProcessDIE return nullptr when processing goes wrong due to malformed debug info, stop processing in this case. Bug: 1349354 Change-Id: Ia1d3e3591bbd2dad8b9eb351c1882cfc03bfad4b Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3821448 Reviewed-by: Joshua Peraza <[email protected]> * Fix garbage header being prepended to native symbol uploads. Change-Id: I96887504ad9dc47dda6ebc5be7c193a1eb1f94d1 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3825137 Reviewed-by: Zequan Wu <[email protected]> * Fix int64_t format in fprintf by using PRIx64. Change-Id: Ic03ecc055c4eb097fbaaf8c8cd2c0a68d5aea8a0 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3826785 Reviewed-by: Joshua Peraza <[email protected]> * Fix -Wdeprecated-declarations when macOS 13 SDK is used. This CL fixes the following error detected on a WebRTC bot: FAILED: obj/third_party/breakpad/utilities/ConfigFile.o /opt/s/w/ir/cache/goma/client/gomacc ../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/third_party/breakpad/utilities/ConfigFile.o.d -DCR_XCODE_VERSION=1400 -DCR_CLANG_REVISION=\"llvmorg-16-init-907-g8b740747-1\" -D_LIBCPP_ABI_NAMESPACE=Cr -D_LIBCPP_ABI_VERSION=2 -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_ENABLE_NODISCARD -DCR_LIBCXX_REVISION=9f503bebdb9a89f5ee82b82142109b26d688f40c -D__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=0 -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -I../.. -Igen -I../../buildtools/third_party/libc++ -I../../third_party/breakpad/breakpad/src -fno-delete-null-pointer-checks -fno-ident -fno-strict-aliasing -fstack-protector -femit-dwarf-unwind=no-compact-unwind -fcolor-diagnostics -fmerge-all-constants -fcrash-diagnostics-dir=../../tools/clang/crashreports -mllvm -instcombine-lower-dbg-declare=0 -ffp-contract=off -fcomplete-member-pointers -arch x86_64 -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -ffile-compilation-dir=. -no-canonical-prefixes -ftrivial-auto-var-init=pattern -O2 -fno-omit-frame-pointer -g2 -gdwarf-aranges -Xclang -debug-info-kind=limited -isysroot sdk/xcode_links/MacOSX13.0.sdk -mmacos-version-min=10.13 -fvisibility=hidden -Xclang -add-plugin -Xclang find-bad-constructs -Xclang -plugin-arg-find-bad-constructs -Xclang raw-ref-template-as-trivial-member -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -Werror -Wall -Wno-unused-variable -Wno-c++11-narrowing -Wno-unused-but-set-variable -Wno-misleading-indentation -Wunguarded-availability -Wno-missing-field-initializers -Wno-unused-parameter -Wloop-analysis -Wno-unneeded-internal-declaration -Wenum-compare-conditional -Wno-psabi -Wno-ignored-pragma-optimize -Wno-deprecated-builtins -std=c++17 -Wno-trigraphs -fobjc-call-cxx-cdtors -fno-exceptions -fno-rtti -nostdinc++ -isystem../../buildtools/third_party/libc++/trunk/include -isystem../../buildtools/third_party/libc++abi/trunk/include -fvisibility-inlines-hidden -c ../../third_party/breakpad/breakpad/src/client/mac/crash_generation/ConfigFile.mm -o obj/third_party/breakpad/utilities/ConfigFile.o ../../third_party/breakpad/breakpad/src/client/mac/crash_generation/ConfigFile.mm:108:5: error: 'sprintf' is deprecated: This function is provided for compatibility reasons only. Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead. [-Werror,-Wdeprecated-declarations] sprintf(processUptimeString, "%llu", ^ sdk/xcode_links/MacOSX13.0.sdk/usr/include/stdio.h:188:1: note: 'sprintf' has been explicitly marked deprecated here __deprecated_msg("This function is provided for compatibility reasons only. Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead.") ^ sdk/xcode_links/MacOSX13.0.sdk/usr/include/sys/cdefs.h:214:48: note: expanded from macro '__deprecated_msg' #define __deprecated_msg(_msg) __attribute__((__deprecated__(_msg))) ^ ../../third_party/breakpad/breakpad/src/client/mac/crash_generation/ConfigFile.mm:114:3: error: 'sprintf' is deprecated: This function is provided for compatibility reasons only. Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead. [-Werror,-Wdeprecated-declarations] sprintf(processCrashtimeString, "%zd", tv.tv_sec); ^ sdk/xcode_links/MacOSX13.0.sdk/usr/include/stdio.h:188:1: note: 'sprintf' has been explicitly marked deprecated here __deprecated_msg("This function is provided for compatibility reasons only. Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead.") ^ sdk/xcode_links/MacOSX13.0.sdk/usr/include/sys/cdefs.h:214:48: note: expanded from macro '__deprecated_msg' #define __deprecated_msg(_msg) __attribute__((__deprecated__(_msg))) Bug: webrtc:14342 Change-Id: I923ab3f9155eb36aa2edf9b1d38c123e3e6ad029 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3829529 Reviewed-by: Mark Mentovai <[email protected]> * Add product name metadata to converter and symupload. Change-Id: Iefea0aea13deb86d71d663c8344a2d3c658caf4a Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3756171 Reviewed-by: Ivan Penkov <[email protected]> * fix includes Change-Id: Ibfe719c3ed303cd45884863746cf07ec22dba45d Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3863388 Reviewed-by: Nelson Billing <[email protected]> * Update LSS dep to the last commit Change-Id: I35f35d9d31d97c8237f0d90170be04716d820028 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3873644 Reviewed-by: Mike Frysinger <[email protected]> * Fix some Coverity defects. Fix a few issues Coverity detected in exploitability_linux.cc: CID 277681, 277682, 277683 Change-Id: I8ad0581f075da7346b9be8100b3690555a358b16 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3872234 Reviewed-by: Mike Frysinger <[email protected]> * Added crash context float state flag Instead of listing everywhere the set of architectures that do not require/support explicit float state in their crash context, a new GOOGLE_BREAKPAD_CRASH_CONTEXT_HAS_FLOAT_STATE preprocessor macro has been defined. Adding novel architectures will only require to manage the macro definition in a single place. Change-Id: I2732982f2cdfc9fcd2f71d6e5e122617faff9e82 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3876345 Reviewed-by: Mike Frysinger <[email protected]> * Fix fread() check in ExploitabilityLinux. This fread() call did not intend to always fill the buffer, so the change in https://crrev.com/c/3872234 is incorrect. Revert that one line change. Change-Id: I3fbe38fce11c24aa77b39dc229c7c5ed2a8d6960 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3879289 Reviewed-by: Mike Frysinger <[email protected]> * Update copyright boilerplate, 2022 edition (Breakpad) sed -i '' -E -e 's/Copyright (\(c\) )?([0-9-]+),? (Google|The Chromium Authors).*(\r)?$/Copyright \2 Google LLC\4/' -e '/^((\/\/|#| \*) )?All rights reserved\.?\r?$/d' -e 's/name of Google Inc\. nor the/name of Google LLC nor the/' -e 's/POSSIBILITY OF SUCH DAMAGE$/POSSIBILITY OF SUCH DAMAGE./' $(git grep -El 'Copyright (\(c\) )?([0-9-]+),? (Google|The Chromium Authors).*$') Plus manual fixes for src/processor/disassembler_x86.{cc,h}. Plus some conversions from CRLF to LF line endings in .cc and .h files. Bug: chromium:1098010 Change-Id: I8030e804eecd9f5a1ec9d66ae166efd8418c2a67 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3878302 Reviewed-by: Mike Frysinger <[email protected]> * Polling in ParallelChildCrashesDontHang test Instead of (arbitrarily) wait 1s for the child process to terminate, the parent now polls the child process every 100ms to check if it's terminated, and it does so for a much longer total time of 10s. This implementation ensures correct check for slower architectures, and fast success for faster ones. Change-Id: I2ff38458bf747de5b74268a4e22fd6164450419b Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3876346 Reviewed-by: Mike Frysinger <[email protected]> * Added riscv and riscv64 support for Linux Change-Id: I62cd157d00a87720db001072662a81d8eb9112b0 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3873291 Reviewed-by: Mike Frysinger <[email protected]> * 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 <[email protected]> * 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 <[email protected]> * 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 <[email protected]> Reviewed-by: Ivan Penkov <[email protected]> * 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 <[email protected]> * 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 <[email protected]> * 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 <[email protected]> Reviewed-by: Manoj Gupta <[email protected]> Reviewed-by: Joshua Peraza <[email protected]> * 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 <[email protected]> * 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 <[email protected]> * 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 <[email protected]> * 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 <[email protected]> Reviewed-by: Joshua Peraza <[email protected]> * 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 <[email protected]> * 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 <[email protected]> * 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 <[email protected]> * 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 <[email protected]> * 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 <[email protected]> Reviewed-by: Zequan Wu <[email protected]> * 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 <[email protected]> Reviewed-by: Joshua Peraza <[email protected]> * Fix Linux ASan Afl build error. Bug: 1385147 Change-Id: I69ebfa1adbc1c2a17decf0079812c4f507e3332c Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4046961 Reviewed-by…
- Loading branch information