Fix handling of libs with a ro map and a rx map.

When the linker was changed so that it put a read-only map and
read-execute map, this code incorrectly computed the relative pc and
offset. Modify to look for the actual start map in this case.

Also, change the load_base name to load_bias.

Bug: 120613266

Test: Dumped logcat while dumping backtraces.

Change-Id: I6628694c5222ea34d63217af3d138707d4900004
diff --git a/libc/malloc_debug/MapData.h b/libc/malloc_debug/MapData.h
index b9b697c..5b08b90 100644
--- a/libc/malloc_debug/MapData.h
+++ b/libc/malloc_debug/MapData.h
@@ -37,17 +37,20 @@
 #include <private/bionic_macros.h>
 
 struct MapEntry {
-  MapEntry(uintptr_t start, uintptr_t end, uintptr_t offset, const char* name, size_t name_len)
-      : start(start), end(end), offset(offset), name(name, name_len) {}
+  MapEntry(uintptr_t start, uintptr_t end, uintptr_t offset, const char* name, size_t name_len, int flags)
+      : start(start), end(end), offset(offset), name(name, name_len), flags(flags) {}
 
   explicit MapEntry(uintptr_t pc) : start(pc), end(pc) {}
 
   uintptr_t start;
   uintptr_t end;
   uintptr_t offset;
-  uintptr_t load_base;
-  bool load_base_read = false;
+  uintptr_t load_bias;
+  uintptr_t elf_start_offset = 0;
   std::string name;
+  int flags;
+  bool init = false;
+  bool valid = false;
 };
 
 // Ordering comparator that returns equivalence for overlapping entries