diff options
Diffstat (limited to 'oatdump/oatdump.cc')
-rw-r--r-- | oatdump/oatdump.cc | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/oatdump/oatdump.cc b/oatdump/oatdump.cc index da0db01386..3d208b5d28 100644 --- a/oatdump/oatdump.cc +++ b/oatdump/oatdump.cc @@ -66,6 +66,7 @@ #include "type_lookup_table.h" #include "vdex_file.h" #include "verifier/method_verifier.h" +#include "verifier/verifier_deps.h" #include "well_known_classes.h" #include <sys/stat.h> @@ -483,6 +484,28 @@ class OatDumper { os << "\n"; if (!options_.dump_header_only_) { + VariableIndentationOutputStream vios(&os); + VdexFile::Header vdex_header = oat_file_.GetVdexFile()->GetHeader(); + if (vdex_header.IsValid()) { + std::string error_msg; + std::vector<const DexFile*> dex_files; + for (size_t i = 0; i < oat_dex_files_.size(); i++) { + const DexFile* dex_file = OpenDexFile(oat_dex_files_[i], &error_msg); + if (dex_file == nullptr) { + os << "Error opening dex file: " << error_msg << std::endl; + return false; + } + dex_files.push_back(dex_file); + } + verifier::VerifierDeps deps(dex_files, oat_file_.GetVdexFile()->GetVerifierDepsData()); + deps.Dump(&vios); + } else { + os << "UNRECOGNIZED vdex file, magic " + << vdex_header.GetMagic() + << ", version " + << vdex_header.GetVersion() + << "\n"; + } for (size_t i = 0; i < oat_dex_files_.size(); i++) { const OatFile::OatDexFile* oat_dex_file = oat_dex_files_[i]; CHECK(oat_dex_file != nullptr); |