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>
diff --git a/src/processor/minidump.cc b/src/processor/minidump.cc
index 75b6b45..f0075eb 100644
--- a/src/processor/minidump.cc
+++ b/src/processor/minidump.cc
@@ -2654,12 +2654,9 @@
       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);
   }
 }