breakpad/src/processor
Sim Sun 13c1568702 arm64: recover register X30(LR) when fallback to frame pointer unwinder
Stackwalk can't recover caller's register X30($LR) value by STACK CFI info.
This will lead unwinding stop immediately when fallback to frame pointer unwinder.

This PR will use try to use second last frame to recover register X30($LR) by frame pointer.
And we will give up correction if STACK CFI info doesn't agree with frame pointer info.

Bug: https://bugs.chromium.org/p/google-breakpad/issues/detail?id=808
Change-Id: I50649e3398e268b02ff297e83db21d05705c2a2d
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1992641
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2020-01-21 16:57:57 +00:00
..
proto Update links 2016-11-18 17:24:37 +00:00
testdata Always emit a 32-bit crash address for 32-bit architectures 2019-01-30 16:21:52 +00:00
address_map_unittest.cc Breakpad: Avoid using the C++ <cfoo> headers. 2010-06-25 16:57:07 +00:00
address_map-inl.h Breakpad: Avoid using the C++ <cfoo> headers. 2010-06-25 16:57:07 +00:00
address_map.h FastSourceLineResolver implementation for optimization purpose. 2010-10-21 17:13:01 +00:00
basic_code_module.h Populate stack frames with unloaded module info. 2017-01-19 19:33:56 +00:00
basic_code_modules.cc Enable truncation of module ranges 2019-06-11 19:04:02 +00:00
basic_code_modules.h Enable truncation of module ranges 2019-06-11 19:04:02 +00:00
basic_source_line_resolver_types.h Add optional field indicating multiple symbols at an address 2017-11-29 21:33:23 +00:00
basic_source_line_resolver_unittest.cc Add optional field indicating multiple symbols at an address 2017-11-29 21:33:23 +00:00
basic_source_line_resolver.cc Add optional field indicating multiple symbols at an address 2017-11-29 21:33:23 +00:00
call_stack.cc Add the TID to the CallStack. 2016-04-01 10:11:10 -04:00
cfi_frame_info_unittest.cc Refactoring in preparation for microdump processing 2014-09-08 19:10:42 +00:00
cfi_frame_info-inl.h Fix a sizeof(pointer) vs sizeof(pointee) issue caught by client. 2011-07-21 21:38:01 +00:00
cfi_frame_info.cc Don't use strtok_s for mingw builds 2015-08-20 15:09:16 +00:00
cfi_frame_info.h Update symbol file documentation links. 2016-06-10 06:29:06 -04:00
contained_range_map_unittest.cc Breakpad: Avoid using the C++ <cfoo> headers. 2010-06-25 16:57:07 +00:00
contained_range_map-inl.h Breakpad: Avoid using the C++ <cfoo> headers. 2010-06-25 16:57:07 +00:00
contained_range_map.h FastSourceLineResolver implementation for optimization purpose. 2010-10-21 17:13:01 +00:00
convert_old_arm64_context.cc Define and use a a new MDRawContextARM64 2018-08-01 19:27:25 +00:00
convert_old_arm64_context.h Define and use a a new MDRawContextARM64 2018-08-01 19:27:25 +00:00
disassembler_x86_unittest.cc Cleanup: Remove duplicate wording in license headers. 2013-04-23 23:18:39 +00:00
disassembler_x86.cc disassembler_x86: Remove unused include 2016-01-08 10:07:04 -05:00
disassembler_x86.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
dump_context.cc processor: Fix memory leak after 88d8114f 2018-08-02 00:02:10 +00:00
dump_object.cc Refactoring in preparation for microdump processing 2014-09-08 19:10:42 +00:00
exploitability_linux.cc Fix a win32 build error by moving a #include out of an #ifndef _WIN32 2016-09-20 12:12:56 -04:00
exploitability_linux.h Fixing a flaky Linux exploitability unittest. 2016-02-16 11:46:04 -08:00
exploitability_unittest.cc Updating ExploitabilityLinux to check memory mapping names against a prefix 2016-08-29 18:39:01 +00:00
exploitability_win.cc Use general instruction/stack pointer convenience method instead of manually 2015-06-30 23:22:09 +00:00
exploitability_win.h Added the base exploitability module for windows. This only adds the very basic exception type based analysis for now. 2010-09-22 02:37:19 +00:00
exploitability.cc Improving the support for Fuchsia in Breakpad Processor. 2019-07-12 18:29:23 +00:00
fast_source_line_resolver_types.h Detect corrupt symbol files during minidump processing. Recover from the errors and use the good data if possible. 2013-07-11 01:36:06 +00:00
fast_source_line_resolver_unittest.cc Populate stack frames with unloaded module info. 2017-01-19 19:33:56 +00:00
fast_source_line_resolver.cc Detect corrupt symbol files during minidump processing. Recover from the errors and use the good data if possible. 2013-07-11 01:36:06 +00:00
linked_ptr.h Fix processor to build with clang 2012-09-10 19:46:19 +00:00
logging.cc Add SEVERITY_CRITICAL to logging, that would help to suppress logs from the fuzz target. 2018-05-29 19:24:32 +00:00
logging.h Remove base_logging::LogMessage 2019-07-12 17:06:06 +00:00
map_serializers_unittest.cc map_serializers_unittest: fix unused variable warning 2013-10-30 17:16:38 +00:00
map_serializers-inl.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
map_serializers.h Make memory allocation/deallocation consistent: use new char[] instead of operator new() 2010-11-03 23:54:01 +00:00
microdump_processor_unittest.cc Add -s flag to microdump_stackwalk for dumping stack contents. 2017-10-17 10:22:46 +00:00
microdump_processor.cc Add -s flag to microdump_stackwalk for dumping stack contents. 2017-10-17 10:22:46 +00:00
microdump_stackwalk_machine_readable_test microdump_stackwalk_test: fix bashism in test 2016-11-25 04:53:01 +00:00
microdump_stackwalk_test microdump_stackwalk_test: fix bashism in test 2016-11-25 04:53:01 +00:00
microdump_stackwalk_test_vars Microdumps: support aarch64 and lib mapping from APK 2014-12-02 15:31:25 +00:00
microdump_stackwalk.cc Provide helper wrappers for basename(3) and dirname(3) 2017-10-18 15:44:59 +00:00
microdump.cc Enable truncation of module ranges 2019-06-11 19:04:02 +00:00
minidump_dump_test Suppress handler thread from appearing in MinidumpProcessor's ProcessState 2006-11-06 23:00:19 +00:00
minidump_dump.cc Allow minidump_dump to print module lists that would normally be rejected 2018-03-12 09:59:33 +00:00
minidump_processor_unittest.cc Always emit a 32-bit crash address for 32-bit architectures 2019-01-30 16:21:52 +00:00
minidump_processor.cc Extract the exception record from the minidump 2020-01-03 20:47:38 +00:00
minidump_stackwalk_machine_readable_test Add module list to machine-readable minidump_stackwalk output (#119). 2007-01-29 21:30:31 +00:00
minidump_stackwalk_test minidump_stackwalk should use MinidumpProcessor (#64). r=bryner 2006-10-27 00:40:56 +00:00
minidump_stackwalk.cc Provide helper wrappers for basename(3) and dirname(3) 2017-10-18 15:44:59 +00:00
minidump_unittest.cc Added classes to support reading unloaded module lists in minidumps. 2016-12-16 20:15:04 +00:00
minidump.cc Add fallthrough annotations on new C++ switches 2019-11-05 03:39:54 +00:00
module_comparer.cc Detect corrupt symbol files during minidump processing. Recover from the errors and use the good data if possible. 2013-07-11 01:36:06 +00:00
module_comparer.h FastSourceLineResolver implementation for optimization purpose. 2010-10-21 17:13:01 +00:00
module_factory.h FastSourceLineResolver implementation for optimization purpose. 2010-10-21 17:13:01 +00:00
module_serializer.cc Detect corrupt symbol files during minidump processing. Recover from the errors and use the good data if possible. 2013-07-11 01:36:06 +00:00
module_serializer.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
pathname_stripper_unittest.cc Breakpad: Avoid using the C++ <cfoo> headers. 2010-06-25 16:57:07 +00:00
pathname_stripper.cc Rename Airbag to Breakpad. 2007-02-14 19:51:05 +00:00
pathname_stripper.h This change allows compiling the google-breakpad code using a global ::string class instead of std::string. For more details take a look at common/using_std_string.h 2012-06-28 22:46:01 +00:00
postfix_evaluator_unittest.cc Refactoring in preparation for microdump processing 2014-09-08 19:10:42 +00:00
postfix_evaluator-inl.h Handle program strings with the assignment operator smashed against the next 2012-02-23 22:41:36 +00:00
postfix_evaluator.h This change allows compiling the google-breakpad code using a global ::string class instead of std::string. For more details take a look at common/using_std_string.h 2012-06-28 22:46:01 +00:00
proc_maps_linux_unittest.cc This change allows compiling the google-breakpad code using a global ::string class instead of std::string. 2016-08-30 23:31:43 +00:00
proc_maps_linux.cc This change allows compiling the google-breakpad code using a global ::string class instead of std::string. 2016-08-30 23:31:43 +00:00
process_state.cc Fixed leak of unloaded module lists. 2017-02-07 22:41:43 +00:00
processor_tools.gypi Add GYP build for the src/tools directory on Mac and Linux. 2014-07-24 15:22:51 +00:00
processor.gyp Enable truncation of module ranges 2019-06-11 19:04:02 +00:00
range_map_truncate_lower_unittest.cc Removed unused includes/declarations 2019-06-11 23:36:23 +00:00
range_map_truncate_upper_unittest.cc Removed unused includes/declarations 2019-06-11 23:36:23 +00:00
range_map_unittest.cc Adding support for overlapping ranges to RangeMap. 2016-06-05 22:41:10 -07:00
range_map-inl.h Enable truncation of module ranges 2019-06-11 19:04:02 +00:00
range_map.h Enable truncation of module ranges 2019-06-11 19:04:02 +00:00
simple_serializer-inl.h Detect corrupt symbol files during minidump processing. Recover from the errors and use the good data if possible. 2013-07-11 01:36:06 +00:00
simple_serializer.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
simple_symbol_supplier.cc Detect corrupt symbol files during minidump processing. Recover from the errors and use the good data if possible. 2013-07-11 01:36:06 +00:00
simple_symbol_supplier.h Detect corrupt symbol files during minidump processing. Recover from the errors and use the good data if possible. 2013-07-11 01:36:06 +00:00
source_line_resolver_base_types.h Add optional field indicating multiple symbols at an address 2017-11-29 21:33:23 +00:00
source_line_resolver_base.cc Detect corrupt symbol files during minidump processing. Recover from the errors and use the good data if possible. 2013-07-11 01:36:06 +00:00
stack_frame_cpu.cc Process minidumps generated on ARM64 in iOS apps. 2013-11-23 01:45:20 +00:00
stack_frame_symbolizer.cc Populate stack frames with unloaded module info. 2017-01-19 19:33:56 +00:00
stackwalk_common.cc This change allows compiling the google-breakpad code using a global ::string class instead of std::string. 2016-08-30 23:31:43 +00:00
stackwalk_common.h Revert "Added a switch to dump minidump modules in minidump_stackwalk." 2016-02-10 13:11:20 -08:00
stackwalker_address_list_unittest.cc Make StackWalkerAddressList use FRAME_TRUST_PREWALKED trust level. 2013-09-04 20:43:10 +00:00
stackwalker_address_list.cc Make StackWalkerAddressList use FRAME_TRUST_PREWALKED trust level. 2013-09-04 20:43:10 +00:00
stackwalker_address_list.h Create StackwalkerAddressList. 2013-08-23 14:38:36 +00:00
stackwalker_amd64_unittest.cc fix build failures 2019-06-11 22:27:59 +00:00
stackwalker_amd64.cc Handle very large stack traces 2017-07-12 17:53:15 +00:00
stackwalker_amd64.h Handle very large stack traces 2017-07-12 17:53:15 +00:00
stackwalker_arm64_unittest.cc fix build failures 2019-06-11 22:27:59 +00:00
stackwalker_arm64.cc arm64: recover register X30(LR) when fallback to frame pointer unwinder 2020-01-21 16:57:57 +00:00
stackwalker_arm64.h arm64: recover register X30(LR) when fallback to frame pointer unwinder 2020-01-21 16:57:57 +00:00
stackwalker_arm_unittest.cc fix build failures 2019-06-11 22:27:59 +00:00
stackwalker_arm.cc iOS: disable using CFI in stackwalking 2018-07-06 21:22:45 +00:00
stackwalker_arm.h Allow setting a limit on the number of frames to be recovered by stack scanning. 2013-08-19 18:31:51 +00:00
stackwalker_mips64_unittest.cc [MIPS]: Don't terminate stackwalk when $sp value doesn't change between frames 2017-03-16 15:59:05 +00:00
stackwalker_mips_unittest.cc [MIPS]: Don't terminate stackwalk when $sp value doesn't change between frames 2017-03-16 15:59:05 +00:00
stackwalker_mips.cc Handle very large stack traces 2017-07-12 17:53:15 +00:00
stackwalker_mips.h Adding support for mips. 2013-09-11 11:37:04 +00:00
stackwalker_ppc64.cc Fix memory leak in ppc64 stackwalker 2017-08-30 17:28:54 +00:00
stackwalker_ppc64.h Allow setting a limit on the number of frames to be recovered by stack scanning. 2013-08-19 18:31:51 +00:00
stackwalker_ppc.cc Fix memory leak in ppc stackwalker 2017-08-18 10:24:52 +00:00
stackwalker_ppc.h Allow setting a limit on the number of frames to be recovered by stack scanning. 2013-08-19 18:31:51 +00:00
stackwalker_selftest_sol.s Add SPARC/Solaris support to client handler and processor (#201, 200). 2007-09-26 18:28:05 +00:00
stackwalker_selftest.cc Refactoring in preparation for microdump processing 2014-09-08 19:10:42 +00:00
stackwalker_sparc.cc Handle very large stack traces 2017-07-12 17:53:15 +00:00
stackwalker_sparc.h Allow setting a limit on the number of frames to be recovered by stack scanning. 2013-08-19 18:31:51 +00:00
stackwalker_unittest_utils.h Enable truncation of module ranges 2019-06-11 19:04:02 +00:00
stackwalker_x86_unittest.cc fix build failures 2019-06-11 22:27:59 +00:00
stackwalker_x86.cc Handle very large stack traces 2017-07-12 17:53:15 +00:00
stackwalker_x86.h Allow setting a limit on the number of frames to be recovered by stack scanning. 2013-08-19 18:31:51 +00:00
stackwalker.cc Define and use a a new MDRawContextARM64 2018-08-01 19:27:25 +00:00
static_address_map_unittest.cc This change allows compiling the google-breakpad code using a global ::string class instead of std::string. For more details take a look at common/using_std_string.h 2012-06-28 22:46:01 +00:00
static_address_map-inl.h Add static version of map wrappers and corresponding serializers. 2010-10-15 20:36:31 +00:00
static_address_map.h Add static version of map wrappers and corresponding serializers. 2010-10-15 20:36:31 +00:00
static_contained_range_map_unittest.cc Move scoped_ptr.h to common 2013-01-17 15:53:56 +00:00
static_contained_range_map-inl.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
static_contained_range_map.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
static_map_iterator-inl.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
static_map_iterator.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
static_map_unittest.cc Explicitly call non-sized delete on dynamically sized memory for correct behavior under sized-delete. 2016-03-11 16:37:46 -08:00
static_map-inl.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
static_map.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
static_range_map_unittest.cc Move scoped_ptr.h to common 2013-01-17 15:53:56 +00:00
static_range_map-inl.h Add static version of map wrappers and corresponding serializers. 2010-10-15 20:36:31 +00:00
static_range_map.h Cleaning up google-breakpad source code of signed-unsigned comparison warnings 2012-11-21 01:33:08 +00:00
symbolic_constants_win.cc Allow compiling the google-breakpad code using a global ::string class instead of std::string. 2016-11-08 01:29:06 +00:00
symbolic_constants_win.h Allow compiling the google-breakpad code using a global ::string class instead of std::string. 2016-11-08 01:29:06 +00:00
synth_minidump_unittest_data.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
synth_minidump_unittest.cc Use stdint types everywhere 2013-03-06 14:04:42 +00:00
synth_minidump.cc Added classes to support reading unloaded module lists in minidumps. 2016-12-16 20:15:04 +00:00
synth_minidump.h Added classes to support reading unloaded module lists in minidumps. 2016-12-16 20:15:04 +00:00
tokenize.cc Don't use strtok_s for mingw builds 2015-08-20 15:09:16 +00:00
tokenize.h This change allows compiling the google-breakpad code using a global ::string class instead of std::string. For more details take a look at common/using_std_string.h 2012-06-28 22:46:01 +00:00
windows_frame_info.h Update symbol file documentation links. 2016-06-10 06:29:06 -04:00