Merge "Add the 'runtime' namespace."
diff --git a/build/Android.gtest.mk b/build/Android.gtest.mk
index 3dab025..67d85c1 100644
--- a/build/Android.gtest.mk
+++ b/build/Android.gtest.mk
@@ -216,6 +216,7 @@
 ART_GTEST_verifier_deps_test_DEX_DEPS := VerifierDeps VerifierDepsMulti MultiDex
 ART_GTEST_dex_to_dex_decompiler_test_DEX_DEPS := VerifierDeps DexToDexDecompiler
 ART_GTEST_oatdump_app_test_DEX_DEPS := ProfileTestMultiDex
+ART_GTEST_oatdump_test_DEX_DEPS := ProfileTestMultiDex
 
 # The elf writer test has dependencies on core.oat.
 ART_GTEST_elf_writer_test_HOST_DEPS := $(HOST_CORE_IMAGE_DEFAULT_64) $(HOST_CORE_IMAGE_DEFAULT_32)
diff --git a/build/apex/Android.bp b/build/apex/Android.bp
index f271ea1..d53a7f2 100644
--- a/build/apex/Android.bp
+++ b/build/apex/Android.bp
@@ -79,9 +79,13 @@
 art_tools_device_binaries = art_tools_common_binaries + art_tools_device_only_binaries
 art_tools_host_binaries = art_tools_common_binaries + art_tools_host_only_binaries
 
-// (Some) Libcore native libraries.
+// Libcore native libraries.
 libcore_native_shared_libs = [
+    "libjavacore",
     "libopenjdk",
+    "libexpat",
+    "libz",
+    "libziparchive"
 ]
 
 // Java libraries
diff --git a/build/apex/runtests.sh b/build/apex/runtests.sh
index 2448a0d..84c0f4f 100755
--- a/build/apex/runtests.sh
+++ b/build/apex/runtests.sh
@@ -175,7 +175,12 @@
   check_library libopenjdkjvmti.so
   check_library libprofile.so
   # Check that the mounted image contains Android Core libraries.
+  check_library "libexpat${host_suffix}.so"
+  check_library libjavacore.so
+  check_library libjavacrypto.so
   check_library libopenjdk.so
+  check_library "libz${host_suffix}.so"
+  check_library libziparchive.so
   # Check that the mounted image contains additional required libraries.
   check_library libadbconnection.so
 
@@ -284,6 +289,7 @@
 
 work_dir=$(mktemp -d)
 mount_point="$work_dir/image"
+host_suffix=""
 
 trap finish_target EXIT
 
@@ -317,6 +323,7 @@
 
 work_dir=$(mktemp -d)
 mount_point="$work_dir/image"
+host_suffix=""
 
 trap finish_target EXIT
 
@@ -388,6 +395,7 @@
 
 work_dir=$(mktemp -d)
 mount_point="$work_dir/zip"
+host_suffix="-host"
 
 trap finish_host EXIT
 
diff --git a/oatdump/oatdump_image_test.cc b/oatdump/oatdump_image_test.cc
index de48b04..0a076f0 100644
--- a/oatdump/oatdump_image_test.cc
+++ b/oatdump/oatdump_image_test.cc
@@ -40,13 +40,13 @@
 TEST_F(OatDumpTest, TestOatImage) {
   TEST_DISABLED_FOR_ARM_AND_MIPS();
   std::string error_msg;
-  ASSERT_TRUE(Exec(kDynamic, kModeOat, {}, kListAndCode));
+  ASSERT_TRUE(Exec(kDynamic, kModeCoreOat, {}, kListAndCode));
 }
 TEST_F(OatDumpTest, TestOatImageStatic) {
   TEST_DISABLED_FOR_ARM_AND_MIPS();
   TEST_DISABLED_FOR_NON_STATIC_HOST_BUILDS();
   std::string error_msg;
-  ASSERT_TRUE(Exec(kStatic, kModeOat, {}, kListAndCode));
+  ASSERT_TRUE(Exec(kStatic, kModeCoreOat, {}, kListAndCode));
 }
 
 }  // namespace art
diff --git a/oatdump/oatdump_test.cc b/oatdump/oatdump_test.cc
index e6936f6..7b1de01 100644
--- a/oatdump/oatdump_test.cc
+++ b/oatdump/oatdump_test.cc
@@ -14,6 +14,8 @@
  * limitations under the License.
  */
 
+#include <android-base/file.h>
+
 #include "oatdump_test.h"
 
 namespace art {
@@ -90,8 +92,11 @@
   // Test is failing on target, b/77469384.
   TEST_DISABLED_FOR_TARGET();
   std::string error_msg;
+  ASSERT_TRUE(GenerateAppOdexFile(kDynamic, {}));
   ASSERT_TRUE(Exec(kDynamic, kModeOat, {"--export-dex-to=" + tmp_dir_}, kListOnly));
-  const std::string dex_location = tmp_dir_+ "/core-oj-hostdex.jar_export.dex";
+  const std::string dex_location =
+      tmp_dir_+ "/" + android::base::Basename(GetTestDexFileName(GetAppBaseName().c_str())) +
+      "_export.dex";
   const std::string dexdump2 = GetExecutableFilePath("dexdump2",
                                                      /*is_debug=*/false,
                                                      /*is_static=*/false);
@@ -104,6 +109,7 @@
   TEST_DISABLED_FOR_ARM_AND_MIPS();
   TEST_DISABLED_FOR_NON_STATIC_HOST_BUILDS();
   std::string error_msg;
+  ASSERT_TRUE(GenerateAppOdexFile(kDynamic, {}));
   ASSERT_TRUE(Exec(kStatic, kModeOat, {"--export-dex-to=" + tmp_dir_}, kListOnly));
 }
 
diff --git a/oatdump/oatdump_test.h b/oatdump/oatdump_test.h
index dfa659b..3ead8de 100644
--- a/oatdump/oatdump_test.h
+++ b/oatdump/oatdump_test.h
@@ -90,6 +90,7 @@
 
   enum Mode {
     kModeOat,
+    kModeCoreOat,
     kModeOatWithBootImage,
     kModeArt,
     kModeSymbolize,
@@ -199,9 +200,11 @@
         exec_argv.push_back("--instruction-set=" + std::string(
             GetInstructionSetString(kRuntimeISA)));
         exec_argv.push_back("--oat-file=" + GetAppOdexName());
+      } else if (mode == kModeCoreOat) {
+        exec_argv.push_back("--oat-file=" + core_oat_location_);
       } else {
         CHECK_EQ(static_cast<size_t>(mode), static_cast<size_t>(kModeOat));
-        exec_argv.push_back("--oat-file=" + core_oat_location_);
+        exec_argv.push_back("--oat-file=" + GetAppOdexName());
       }
     }
     exec_argv.insert(exec_argv.end(), args.begin(), args.end());