breakpad/src/processor
Joshua Peraza c2d969cb10 Added classes to support reading unloaded module lists in minidumps.
The implementations of Module/UnloadedModule and
ModuleList/UnloadedModuleList are very similar. They have been made
separate classes because they operate on different structs, complicating
factoring code into a base class and have sufficiently different
implementation that templates would not be suitable.

When unloaded modules have partially overlapping ranges, the module
shrink down feature is used to move the start of the higher range to the
end of the lower range. If two unloaded modules overlap identically, the
second module will not be added to the range map and the failure
ignored.

Places where MinidumpUnloadedModule differs from MinidumpModule:
  code_identifier: the android/linux case is deleted since cv_records
    never exist.
  debug_file/debug_identifier/version: always return empty strings.
  Read: an expected size is provided as opposed to MD_MODULE_SIZE. A
    seek is used if there are extra, unused bytes.

Places where MinidumpUnloadedModuleList differs from
  MinidumpModuleList:
  Read: entry and header size is provided in the header in
    addition to count. This changes the checks and handling of padding.
    Failures from StoreRange are ignored.
  GetMainModule: always returns NULL.

BUG=

Change-Id: I52e93d3ccc38483f50a6418fede8b506ec879aaa
Reviewed-on: https://chromium-review.googlesource.com/421566
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2016-12-16 20:15:04 +00:00
..
proto Update links 2016-11-18 17:24:37 +00:00
testdata Updating ExploitabilityLinux to check memory mapping names against a prefix 2016-08-29 18:39:01 +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 Server-side workaround to handle overlapping modules. 2016-06-20 11:14:47 -07:00
basic_code_modules.cc Server-side workaround to handle overlapping modules. 2016-06-20 11:14:47 -07:00
basic_code_modules.h Server-side workaround to handle overlapping modules. 2016-06-20 11:14:47 -07:00
basic_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
basic_source_line_resolver_unittest.cc Server-side workaround to handle overlapping modules. 2016-06-20 11:14:47 -07:00
basic_source_line_resolver.cc Fix a trivial parsing bug caught by static analysis 2016-06-10 09:51:14 -04: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
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 Rename stdio.h wrapper file to stdio_wrapper.h. 2016-04-05 15:45:30 -04: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 Add check for Linux minidump ending on bad write for exploitability rating. 2015-08-21 16:22:19 +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 Server-side workaround to handle overlapping modules. 2016-06-20 11:14:47 -07: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 Rename stdio.h wrapper file to stdio_wrapper.h. 2016-04-05 15:45:30 -04:00
logging.h Add support for configuring the minimum log level at compile time 2013-11-05 19:43:48 +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 Server-side workaround to handle overlapping modules. 2016-06-20 11:14:47 -07:00
microdump_processor.cc Microdumps: support aarch64 and lib mapping from APK 2014-12-02 15:31:25 +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 Add stack contents output functionality to minidump_stackwalk 2015-02-27 04:52:21 +00:00
microdump.cc Server-side workaround to handle overlapping modules. 2016-06-20 11:14:47 -07:00
minidump_dump_test Suppress handler thread from appearing in MinidumpProcessor's ProcessState 2006-11-06 23:00:19 +00:00
minidump_dump.cc Use stdint types everywhere 2013-03-06 14:04:42 +00:00
minidump_processor_unittest.cc fix signed warning errors in unittests 2016-05-26 10:09:46 -04:00
minidump_processor.cc Add a crash reason string for the simulated crashpad exception code 2016-11-10 14:46:53 +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 Revert "Added a switch to dump minidump modules in minidump_stackwalk." 2016-02-10 13:11:20 -08:00
minidump_unittest.cc Added classes to support reading unloaded module lists in minidumps. 2016-12-16 20:15:04 +00:00
minidump.cc Added classes to support reading unloaded module lists in minidumps. 2016-12-16 20:15:04 +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 Surfacing the process create time in google_breakpad::ProcessState 2014-11-25 22:45:23 +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 Adding support for overlapping ranges to RangeMap. 2016-06-05 22:41:10 -07:00
range_map_shrink_down_unittest.cc Adding support for overlapping ranges to RangeMap. 2016-06-05 22:41:10 -07:00
range_map_unittest.cc Adding support for overlapping ranges to RangeMap. 2016-06-05 22:41:10 -07:00
range_map-inl.h Server-side workaround to handle overlapping modules. 2016-06-20 11:14:47 -07:00
range_map.h Server-side workaround to handle overlapping modules. 2016-06-20 11:14:47 -07: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 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.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 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
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 Make x86-64 frame pointer unwinding stricter 2016-04-19 15:20:09 -04:00
stackwalker_amd64.cc Make x86-64 frame pointer unwinding stricter 2016-04-19 15:20:09 -04:00
stackwalker_amd64.h Issue in StackwalkerAMD64::GetCallerByFramePointerRecovery. 2015-10-15 20:47:15 -07:00
stackwalker_arm64_unittest.cc Increasing the Breakpad stack walker max scan limit from 30 to 40. 2015-10-05 11:35:09 -07:00
stackwalker_arm64.cc Add support for CFI based stack walking on Arm64. 2014-05-06 09:18:30 +00:00
stackwalker_arm64.h Add support for CFI based stack walking on Arm64. 2014-05-06 09:18:30 +00:00
stackwalker_arm_unittest.cc Increasing the Breakpad stack walker max scan limit from 30 to 40. 2015-10-05 11:35:09 -07:00
stackwalker_arm.cc Allow setting a limit on the number of frames to be recovered by stack scanning. 2013-08-19 18:31:51 +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 [mips64] Support for mips n64 2016-02-06 18:58:39 -05:00
stackwalker_mips_unittest.cc [mips64] Support for mips n64 2016-02-06 18:58:39 -05:00
stackwalker_mips.cc [mips64] Support for mips n64 2016-02-06 18:58:39 -05:00
stackwalker_mips.h Adding support for mips. 2013-09-11 11:37:04 +00:00
stackwalker_ppc64.cc Allow setting a limit on the number of frames to be recovered by stack scanning. 2013-08-19 18:31:51 +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 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.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 Allow setting a limit on the number of frames to be recovered by stack scanning. 2013-08-19 18:31:51 +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 Allow compiling the google-breakpad code using a global ::string class instead of std::string. 2016-11-08 01:29:06 +00:00
stackwalker_x86_unittest.cc Provide initial EBX value to FPO frame data evaluator 2016-10-14 17:51:32 +00:00
stackwalker_x86.cc Provide initial EBX value to FPO frame data evaluator 2016-10-14 17:51:32 +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 [mips64] Support for mips n64 2016-02-06 18:58:39 -05: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