Support map data in the backtrace data structure.
The backtrace data structure used to keep a pointer to the map data. Now
the code has the map data embedded in the structure and no pointers.
Bug: 19028453
Change-Id: If7088a73f3c6bf1f3bc8cdd2bb4b62e7cab831c0
diff --git a/runtime/utils.cc b/runtime/utils.cc
index 8347b7e..af16d7e 100644
--- a/runtime/utils.cc
+++ b/runtime/utils.cc
@@ -1225,11 +1225,11 @@
// #XX. <RELATIVE_ADDR> has to be a hex number but with no 0x prefix.
os << prefix << StringPrintf("#%02zu pc ", it->num);
bool try_addr2line = false;
- if (!it->map) {
+ if (!BacktraceMap::IsValid(it->map)) {
os << StringPrintf("%08" PRIxPTR " ???", it->pc);
} else {
- os << StringPrintf("%08" PRIxPTR " ", it->pc - it->map->start);
- os << it->map->name;
+ os << StringPrintf("%08" PRIxPTR " ", it->pc - it->map.start);
+ os << it->map.name;
os << " (";
if (!it->func_name.empty()) {
os << it->func_name;
@@ -1250,7 +1250,7 @@
}
os << "\n";
if (try_addr2line && use_addr2line) {
- Addr2line(it->map->name, it->pc - it->map->start, os, prefix);
+ Addr2line(it->map.name, it->pc - it->map.start, os, prefix);
}
}
#else