aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJoshua Peraza <jperaza@chromium.org>2020-02-20 18:56:04 -0800
committerJoshua Peraza <jperaza@chromium.org>2020-02-21 04:06:35 +0000
commit5e1c53a4427d65fa5d7798aea3893dc64572717e (patch)
treef255d4156ab57b5b9b0b22d9227aea3e609767f6 /src
parentAdd optional new symbol upload API to sym_upload. (diff)
downloadbreakpad-5e1c53a4427d65fa5d7798aea3893dc64572717e.tar.xz
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>
Diffstat (limited to 'src')
-rw-r--r--src/processor/minidump.cc9
1 files changed, 3 insertions, 6 deletions
diff --git a/src/processor/minidump.cc b/src/processor/minidump.cc
index 75b6b455..f0075eb2 100644
--- a/src/processor/minidump.cc
+++ b/src/processor/minidump.cc
@@ -2654,12 +2654,9 @@ MinidumpModuleList::MinidumpModuleList(Minidump* minidump)
modules_(NULL),
module_count_(0) {
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);
- }
+ if (minidump_->GetPlatform(&platform) &&
+ (platform == MD_OS_ANDROID || platform == MD_OS_LINUX)) {
+ range_map_->SetMergeStrategy(MergeRangeStrategy::kTruncateLower);
}
}