Snap for 8072266 from cc809a55aaed91ce54c0dde6efbc9bd4acb4eea5 to mainline-sdkext-release

Change-Id: I89816150db55e70e0bbc6d08f0f80167ab906729
diff --git a/dex2oat/linker/oat_writer_test.cc b/dex2oat/linker/oat_writer_test.cc
index 7bcff2b..3bce745 100644
--- a/dex2oat/linker/oat_writer_test.cc
+++ b/dex2oat/linker/oat_writer_test.cc
@@ -203,6 +203,9 @@
       return false;
     }
     oat_writer.Initialize(compiler_driver_.get(), /*image_writer=*/ nullptr, dex_files);
+    if (!oat_writer.FinishVdexFile(vdex_file, /*verifier_deps=*/ nullptr)) {
+      return false;
+    }
     oat_writer.PrepareLayout(&patcher);
     elf_writer->PrepareDynamicSection(oat_writer.GetOatHeader().GetExecutableOffset(),
                                       oat_writer.GetCodeSize(),
@@ -212,9 +215,6 @@
                                       oat_writer.GetBssRootsOffset(),
                                       oat_writer.GetVdexSize());
 
-    if (!oat_writer.FinishVdexFile(vdex_file, /*verifier_deps=*/ nullptr)) {
-      return false;
-    }
 
     if (!oat_writer.WriteRodata(oat_rodata)) {
       return false;
diff --git a/runtime/vdex_file.cc b/runtime/vdex_file.cc
index 9671679..fd60944 100644
--- a/runtime/vdex_file.cc
+++ b/runtime/vdex_file.cc
@@ -23,6 +23,7 @@
 #include <unordered_set>
 
 #include <android-base/logging.h>
+#include <android-base/stringprintf.h>
 
 #include "base/bit_utils.h"
 #include "base/leb128.h"
@@ -44,6 +45,8 @@
 
 namespace art {
 
+using android::base::StringPrintf;
+
 constexpr uint8_t VdexFile::VdexFileHeader::kVdexInvalidMagic[4];
 constexpr uint8_t VdexFile::VdexFileHeader::kVdexMagic[4];
 constexpr uint8_t VdexFile::VdexFileHeader::kVdexVersion[4];
@@ -119,9 +122,10 @@
                                                   bool unquicken,
                                                   std::string* error_msg) {
   if (mmap_addr != nullptr && mmap_size < vdex_length) {
-    LOG(WARNING) << "Insufficient pre-allocated space to mmap vdex.";
-    mmap_addr = nullptr;
-    mmap_reuse = false;
+    *error_msg = StringPrintf("Insufficient pre-allocated space to mmap vdex: %zu and %zu",
+                              mmap_size,
+                              vdex_length);
+    return nullptr;
   }
   CHECK(!mmap_reuse || mmap_addr != nullptr);
   CHECK(!(writable && unquicken)) << "We don't want to be writing unquickened files out to disk!";