Remove dependency on libbacktrace.
libbacktrace is being deprecated, so move the maps reading code
to use libprocinfo since that is meant to be the android maps
reading code.
Bug: 120606663
Test: All unit tests pass.
Change-Id: Ie44b4c71c4737c1dd5b1effb33e11c55a7f42454
diff --git a/runtime/Android.bp b/runtime/Android.bp
index 0e950b2..73a1533 100644
--- a/runtime/Android.bp
+++ b/runtime/Android.bp
@@ -678,7 +678,9 @@
],
shared_libs: [
"libbase",
- "libbacktrace",
+ ],
+ static_libs: [
+ "libprocinfo",
],
header_libs: [
"libnativehelper_header_only",
diff --git a/runtime/dexopt_test.cc b/runtime/dexopt_test.cc
index f0b31cc..eb5b149 100644
--- a/runtime/dexopt_test.cc
+++ b/runtime/dexopt_test.cc
@@ -17,8 +17,8 @@
#include <string>
#include <vector>
-#include <backtrace/BacktraceMap.h>
#include <gtest/gtest.h>
+#include <procinfo/process_map.h>
#include "android-base/stringprintf.h"
#include "android-base/strings.h"
@@ -220,13 +220,14 @@
uint64_t reservation_start = ART_BASE_ADDRESS;
uint64_t reservation_end = ART_BASE_ADDRESS + 384 * MB;
- std::unique_ptr<BacktraceMap> map(BacktraceMap::Create(getpid(), true));
- ASSERT_TRUE(map.get() != nullptr) << "Failed to build process map";
- for (BacktraceMap::iterator it = map->begin();
- reservation_start < reservation_end && it != map->end(); ++it) {
- const backtrace_map_t* entry = *it;
- ReserveImageSpaceChunk(reservation_start, std::min(entry->start, reservation_end));
- reservation_start = std::max(reservation_start, entry->end);
+ std::vector<android::procinfo::MapInfo> maps;
+ ASSERT_TRUE(android::procinfo::ReadProcessMaps(getpid(), &maps));
+ for (const android::procinfo::MapInfo& map_info : maps) {
+ ReserveImageSpaceChunk(reservation_start, std::min(map_info.start, reservation_end));
+ reservation_start = std::max(reservation_start, map_info.end);
+ if (reservation_start >= reservation_end) {
+ break;
+ }
}
ReserveImageSpaceChunk(reservation_start, reservation_end);
}