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!";