Revert "Revert "ART: Fix up some multi-image cases""
This reverts commit de38b797c3e5ba3ee44c480db7093386975c51eb.
Fix up imgdiag for std::string and multi-image.
Bug: 26317072
Bug: 26320300
Change-Id: I94ce9528e9fea6fb3231a70c32db02d567143db9
diff --git a/imgdiag/imgdiag.cc b/imgdiag/imgdiag.cc
index b8a72af..93a0974 100644
--- a/imgdiag/imgdiag.cc
+++ b/imgdiag/imgdiag.cc
@@ -49,7 +49,7 @@
public:
explicit ImgDiagDumper(std::ostream* os,
const ImageHeader& image_header,
- const char* image_location,
+ const std::string& image_location,
pid_t image_diff_pid)
: os_(os),
image_header_(image_header),
@@ -163,7 +163,7 @@
std::string error_msg;
// Walk the bytes and diff against our boot image
- const ImageHeader& boot_image_header = GetBootImageHeader();
+ const ImageHeader& boot_image_header = image_header_;
os << "\nObserving boot image header at address "
<< reinterpret_cast<const void*>(&boot_image_header)
@@ -812,14 +812,6 @@
return page_frame_number != page_frame_number_clean;
}
- static const ImageHeader& GetBootImageHeader() {
- gc::Heap* heap = Runtime::Current()->GetHeap();
- std::vector<gc::space::ImageSpace*> image_spaces = heap->GetBootImageSpaces();
- CHECK(!image_spaces.empty());
- const ImageHeader& image_header = image_spaces[0]->GetImageHeader();
- return image_header;
- }
-
private:
// Return the image location, stripped of any directories, e.g. "boot.art" or "core.art"
std::string GetImageLocationBaseName() const {
@@ -828,7 +820,7 @@
std::ostream* os_;
const ImageHeader& image_header_;
- const char* image_location_;
+ const std::string image_location_;
pid_t image_diff_pid_; // Dump image diff against boot.art if pid is non-negative
DISALLOW_COPY_AND_ASSIGN(ImgDiagDumper);
@@ -847,7 +839,7 @@
}
ImgDiagDumper img_diag_dumper(
- os, image_header, image_space->GetImageLocation().c_str(), image_diff_pid);
+ os, image_header, image_space->GetImageLocation(), image_diff_pid);
if (!img_diag_dumper.Dump()) {
return EXIT_FAILURE;
}