Fix ExtractToMemMap to show original zip file name in ashmem

(cherry picked from commit 1fca8e91f32dc8b13d3129b7ef4a0194839736e6)

Change-Id: Id7d22600496b090ac32150c8c6424da89964b6be
diff --git a/dex2oat/dex2oat.cc b/dex2oat/dex2oat.cc
index f0b5750..2126625 100644
--- a/dex2oat/dex2oat.cc
+++ b/dex2oat/dex2oat.cc
@@ -295,8 +295,9 @@
                                 zip_filename, error_msg->c_str());
       return nullptr;
     }
-    std::unique_ptr<MemMap> image_classes_file(zip_entry->ExtractToMemMap(image_classes_filename,
-                                                                    error_msg));
+    std::unique_ptr<MemMap> image_classes_file(zip_entry->ExtractToMemMap(zip_filename,
+                                                                          image_classes_filename,
+                                                                          error_msg));
     if (image_classes_file.get() == nullptr) {
       *error_msg = StringPrintf("Failed to extract '%s' from '%s': %s", image_classes_filename,
                                 zip_filename, error_msg->c_str());
diff --git a/runtime/dex_file.cc b/runtime/dex_file.cc
index 43ae308..9cb2f1b 100644
--- a/runtime/dex_file.cc
+++ b/runtime/dex_file.cc
@@ -245,7 +245,7 @@
   if (zip_entry.get() == NULL) {
     return nullptr;
   }
-  std::unique_ptr<MemMap> map(zip_entry->ExtractToMemMap(kClassesDex, error_msg));
+  std::unique_ptr<MemMap> map(zip_entry->ExtractToMemMap(location.c_str(), kClassesDex, error_msg));
   if (map.get() == NULL) {
     *error_msg = StringPrintf("Failed to extract '%s' from '%s': %s", kClassesDex, location.c_str(),
                               error_msg->c_str());
diff --git a/runtime/zip_archive.cc b/runtime/zip_archive.cc
index 841c01a..c02f310 100644
--- a/runtime/zip_archive.cc
+++ b/runtime/zip_archive.cc
@@ -50,13 +50,14 @@
   return true;
 }
 
-MemMap* ZipEntry::ExtractToMemMap(const char* entry_filename, std::string* error_msg) {
+MemMap* ZipEntry::ExtractToMemMap(const char* zip_filename, const char* entry_filename,
+                                  std::string* error_msg) {
   std::string name(entry_filename);
   name += " extracted in memory from ";
-  name += entry_filename;
+  name += zip_filename;
   std::unique_ptr<MemMap> map(MemMap::MapAnonymous(name.c_str(),
-                                             NULL, GetUncompressedLength(),
-                                             PROT_READ | PROT_WRITE, false, error_msg));
+                                                   NULL, GetUncompressedLength(),
+                                                   PROT_READ | PROT_WRITE, false, error_msg));
   if (map.get() == nullptr) {
     DCHECK(!error_msg->empty());
     return nullptr;
diff --git a/runtime/zip_archive.h b/runtime/zip_archive.h
index c0e2f2f..865af51 100644
--- a/runtime/zip_archive.h
+++ b/runtime/zip_archive.h
@@ -37,7 +37,8 @@
 class ZipEntry {
  public:
   bool ExtractToFile(File& file, std::string* error_msg);
-  MemMap* ExtractToMemMap(const char* entry_filename, std::string* error_msg);
+  MemMap* ExtractToMemMap(const char* zip_filename, const char* entry_filename,
+                          std::string* error_msg);
   virtual ~ZipEntry();
 
   uint32_t GetUncompressedLength();