Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(230)

Side by Side Diff: src/processor/minidump.cc

Issue 2060663002: Server-side workaround to handle overlapping modules. (Closed) Base URL: https://chromium.googlesource.com/breakpad/breakpad.git@master
Patch Set: Fixing whitespace Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/processor/microdump_processor_unittest.cc ('k') | src/processor/minidump_processor.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 Google Inc. 1 // Copyright (c) 2010 Google Inc.
2 // All rights reserved. 2 // All rights reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are 5 // modification, are permitted provided that the following conditions are
6 // met: 6 // met:
7 // 7 //
8 // * Redistributions of source code must retain the above copyright 8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer. 9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above 10 // * Redistributions in binary form must reproduce the above
(...skipping 2091 matching lines...) Expand 10 before | Expand all | Expand 10 after
2102 // Mac OS X and Linux, instead of forcing them to adhere to the dotted 2102 // Mac OS X and Linux, instead of forcing them to adhere to the dotted
2103 // quad of 16-bit ints that Windows uses. 2103 // quad of 16-bit ints that Windows uses.
2104 2104
2105 BPLOG_IF(INFO, version.empty()) << "MinidumpModule could not determine " 2105 BPLOG_IF(INFO, version.empty()) << "MinidumpModule could not determine "
2106 "version for " << *name_; 2106 "version for " << *name_;
2107 2107
2108 return version; 2108 return version;
2109 } 2109 }
2110 2110
2111 2111
2112 const CodeModule* MinidumpModule::Copy() const { 2112 CodeModule* MinidumpModule::Copy() const {
2113 return new BasicCodeModule(this); 2113 return new BasicCodeModule(this);
2114 } 2114 }
2115 2115
2116 2116
2117 uint64_t MinidumpModule::shrink_down_delta() const {
2118 return 0;
2119 }
2120
2121 void MinidumpModule::SetShrinkDownDelta(uint64_t shrink_down_delta) {
2122 // Not implemented
2123 assert(false);
2124 }
2125
2126
2117 const uint8_t* MinidumpModule::GetCVRecord(uint32_t* size) { 2127 const uint8_t* MinidumpModule::GetCVRecord(uint32_t* size) {
2118 if (!module_valid_) { 2128 if (!module_valid_) {
2119 BPLOG(ERROR) << "Invalid MinidumpModule for GetCVRecord"; 2129 BPLOG(ERROR) << "Invalid MinidumpModule for GetCVRecord";
2120 return NULL; 2130 return NULL;
2121 } 2131 }
2122 2132
2123 if (!cv_record_) { 2133 if (!cv_record_) {
2124 // This just guards against 0-sized CodeView records; more specific checks 2134 // This just guards against 0-sized CodeView records; more specific checks
2125 // are used when the signature is checked against various structure types. 2135 // are used when the signature is checked against various structure types.
2126 if (module_.cv_record.data_size == 0) { 2136 if (module_.cv_record.data_size == 0) {
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after
2490 2500
2491 2501
2492 uint32_t MinidumpModuleList::max_modules_ = 1024; 2502 uint32_t MinidumpModuleList::max_modules_ = 1024;
2493 2503
2494 2504
2495 MinidumpModuleList::MinidumpModuleList(Minidump* minidump) 2505 MinidumpModuleList::MinidumpModuleList(Minidump* minidump)
2496 : MinidumpStream(minidump), 2506 : MinidumpStream(minidump),
2497 range_map_(new RangeMap<uint64_t, unsigned int>()), 2507 range_map_(new RangeMap<uint64_t, unsigned int>()),
2498 modules_(NULL), 2508 modules_(NULL),
2499 module_count_(0) { 2509 module_count_(0) {
2510 range_map_->SetEnableShrinkDown(true);
Mark Mentovai 2016/06/13 14:38:10 I thought that we were only going to do this for t
ivanpe 2016/06/13 21:36:00 I thought about this. I'm sorry I didn't mentione
2500 } 2511 }
2501 2512
2502 2513
2503 MinidumpModuleList::~MinidumpModuleList() { 2514 MinidumpModuleList::~MinidumpModuleList() {
2504 delete range_map_; 2515 delete range_map_;
2505 delete modules_; 2516 delete modules_;
2506 } 2517 }
2507 2518
2508 2519
2509 bool MinidumpModuleList::Read(uint32_t expected_size) { 2520 bool MinidumpModuleList::Read(uint32_t expected_size) {
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
2702 return NULL; 2713 return NULL;
2703 } 2714 }
2704 2715
2705 if (sequence >= module_count_) { 2716 if (sequence >= module_count_) {
2706 BPLOG(ERROR) << "MinidumpModuleList sequence out of range: " << 2717 BPLOG(ERROR) << "MinidumpModuleList sequence out of range: " <<
2707 sequence << "/" << module_count_; 2718 sequence << "/" << module_count_;
2708 return NULL; 2719 return NULL;
2709 } 2720 }
2710 2721
2711 unsigned int module_index; 2722 unsigned int module_index;
2712 if (!range_map_->RetrieveRangeAtIndex(sequence, &module_index, 2723 if (!range_map_->RetrieveRangeAtIndex(sequence, &module_index,
2713 NULL /* base */, NULL /* delta */, 2724 NULL /* base */, NULL /* delta */,
2714 NULL /* size */)) { 2725 NULL /* size */)) {
2715 BPLOG(ERROR) << "MinidumpModuleList has no module at sequence " << sequence; 2726 BPLOG(ERROR) << "MinidumpModuleList has no module at sequence " << sequence;
2716 return NULL; 2727 return NULL;
2717 } 2728 }
2718 2729
2719 return GetModuleAtIndex(module_index); 2730 return GetModuleAtIndex(module_index);
2720 } 2731 }
2721 2732
2722 2733
(...skipping 11 matching lines...) Expand all
2734 } 2745 }
2735 2746
2736 return &(*modules_)[index]; 2747 return &(*modules_)[index];
2737 } 2748 }
2738 2749
2739 2750
2740 const CodeModules* MinidumpModuleList::Copy() const { 2751 const CodeModules* MinidumpModuleList::Copy() const {
2741 return new BasicCodeModules(this); 2752 return new BasicCodeModules(this);
2742 } 2753 }
2743 2754
2755 vector<linked_ptr<const CodeModule> >
2756 MinidumpModuleList::GetShrunkRangeModules() const {
2757 return vector<linked_ptr<const CodeModule> >();
2758 }
2744 2759
2745 void MinidumpModuleList::Print() { 2760 void MinidumpModuleList::Print() {
2746 if (!valid_) { 2761 if (!valid_) {
2747 BPLOG(ERROR) << "MinidumpModuleList cannot print invalid data"; 2762 BPLOG(ERROR) << "MinidumpModuleList cannot print invalid data";
2748 return; 2763 return;
2749 } 2764 }
2750 2765
2751 printf("MinidumpModuleList\n"); 2766 printf("MinidumpModuleList\n");
2752 printf(" module_count = %d\n", module_count_); 2767 printf(" module_count = %d\n", module_count_);
2753 printf("\n"); 2768 printf("\n");
(...skipping 2116 matching lines...) Expand 10 before | Expand all | Expand 10 after
4870 return NULL; 4885 return NULL;
4871 } 4886 }
4872 4887
4873 *stream = new_stream.release(); 4888 *stream = new_stream.release();
4874 info->stream = *stream; 4889 info->stream = *stream;
4875 return *stream; 4890 return *stream;
4876 } 4891 }
4877 4892
4878 4893
4879 } // namespace google_breakpad 4894 } // namespace google_breakpad
OLDNEW
« no previous file with comments | « src/processor/microdump_processor_unittest.cc ('k') | src/processor/minidump_processor.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698