aboutsummaryrefslogtreecommitdiff
path: root/src/processor/minidump.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/processor/minidump.cc')
-rw-r--r--src/processor/minidump.cc34
1 files changed, 21 insertions, 13 deletions
diff --git a/src/processor/minidump.cc b/src/processor/minidump.cc
index afc5f038..aebed0e3 100644
--- a/src/processor/minidump.cc
+++ b/src/processor/minidump.cc
@@ -2667,7 +2667,14 @@ MinidumpModuleList::MinidumpModuleList(Minidump* minidump)
range_map_(new RangeMap<uint64_t, unsigned int>()),
modules_(NULL),
module_count_(0) {
- range_map_->SetEnableShrinkDown(minidump_->IsAndroid());
+ MDOSPlatform platform;
+ if (minidump_->GetPlatform(&platform)) {
+ if (platform == MD_OS_ANDROID) {
+ range_map_->SetMergeStrategy(MergeRangeStrategy::kTruncateUpper);
+ } else if (platform == MD_OS_LINUX) {
+ range_map_->SetMergeStrategy(MergeRangeStrategy::kTruncateLower);
+ }
+ }
}
@@ -2931,7 +2938,7 @@ const MinidumpModule* MinidumpModuleList::GetModuleAtIndex(
const CodeModules* MinidumpModuleList::Copy() const {
- return new BasicCodeModules(this);
+ return new BasicCodeModules(this, range_map_->GetMergeStrategy());
}
vector<linked_ptr<const CodeModule> >
@@ -2939,10 +2946,6 @@ MinidumpModuleList::GetShrunkRangeModules() const {
return vector<linked_ptr<const CodeModule> >();
}
-bool MinidumpModuleList::IsModuleShrinkEnabled() const {
- return range_map_->IsShrinkDownEnabled();
-}
-
void MinidumpModuleList::Print() {
if (!valid_) {
BPLOG(ERROR) << "MinidumpModuleList cannot print invalid data";
@@ -3870,7 +3873,7 @@ MinidumpUnloadedModuleList::MinidumpUnloadedModuleList(Minidump* minidump)
range_map_(new RangeMap<uint64_t, unsigned int>()),
unloaded_modules_(NULL),
module_count_(0) {
- range_map_->SetEnableShrinkDown(true);
+ range_map_->SetMergeStrategy(MergeRangeStrategy::kTruncateLower);
}
MinidumpUnloadedModuleList::~MinidumpUnloadedModuleList() {
@@ -4048,7 +4051,7 @@ MinidumpUnloadedModuleList::GetModuleAtIndex(
}
const CodeModules* MinidumpUnloadedModuleList::Copy() const {
- return new BasicCodeModules(this);
+ return new BasicCodeModules(this, range_map_->GetMergeStrategy());
}
vector<linked_ptr<const CodeModule>>
@@ -4056,10 +4059,6 @@ MinidumpUnloadedModuleList::GetShrunkRangeModules() const {
return vector<linked_ptr<const CodeModule> >();
}
-bool MinidumpUnloadedModuleList::IsModuleShrinkEnabled() const {
- return range_map_->IsShrinkDownEnabled();
-}
-
//
// MinidumpMiscInfo
@@ -5386,6 +5385,11 @@ MinidumpLinuxMapsList *Minidump::GetLinuxMapsList() {
}
bool Minidump::IsAndroid() {
+ MDOSPlatform platform;
+ return GetPlatform(&platform) && platform == MD_OS_ANDROID;
+}
+
+bool Minidump::GetPlatform(MDOSPlatform* platform) {
// Save the current stream position
off_t saved_position = Tell();
if (saved_position == -1) {
@@ -5400,7 +5404,11 @@ bool Minidump::IsAndroid() {
return false;
}
- return system_info && system_info->platform_id == MD_OS_ANDROID;
+ if (!system_info) {
+ return false;
+ }
+ *platform = static_cast<MDOSPlatform>(system_info->platform_id);
+ return true;
}
MinidumpCrashpadInfo* Minidump::GetCrashpadInfo() {