android: truncate lower of two overlapping modules
Previously, the processor truncated the upper of two overlapping module ranges to compensate for incorrect reporting of module ranges by the Breakpad client. Crashpad correctly reports module load ranges, so this truncation strategy is no longer necessary. However, when partitioned libraries are used, the base library may have a range which encompasses the other partitions. When this is combined with the truncate upper merge strategy, the base library's executable segment is truncated causing symbolization failures. This patch changes Android's merge strategy to truncate the lower range (which is still the base library, but this strategy truncates from the high end of the library's range, instead of its base). Bug: b/149845120 Change-Id: Ic75ecd3e919432690740eb21ebd4265fc0bbaa86 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2067952 Reviewed-by: Mark Mentovai <mark@chromium.org>
This commit is contained in:
parent
bbad9f255d
commit
5e1c53a442
1 changed files with 3 additions and 6 deletions
|
@ -2654,12 +2654,9 @@ MinidumpModuleList::MinidumpModuleList(Minidump* minidump)
|
||||||
modules_(NULL),
|
modules_(NULL),
|
||||||
module_count_(0) {
|
module_count_(0) {
|
||||||
MDOSPlatform platform;
|
MDOSPlatform platform;
|
||||||
if (minidump_->GetPlatform(&platform)) {
|
if (minidump_->GetPlatform(&platform) &&
|
||||||
if (platform == MD_OS_ANDROID) {
|
(platform == MD_OS_ANDROID || platform == MD_OS_LINUX)) {
|
||||||
range_map_->SetMergeStrategy(MergeRangeStrategy::kTruncateUpper);
|
range_map_->SetMergeStrategy(MergeRangeStrategy::kTruncateLower);
|
||||||
} else if (platform == MD_OS_LINUX) {
|
|
||||||
range_map_->SetMergeStrategy(MergeRangeStrategy::kTruncateLower);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue