Merge "Selectively allow dead reference elimination"
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/ld.config.txt b/build/apex/ld.config.txt
index d5eb9fa..d0145e4 100644
--- a/build/apex/ld.config.txt
+++ b/build/apex/ld.config.txt
@@ -8,7 +8,7 @@
dir.runtime = /apex/com.android.runtime/bin/
[runtime]
-additional.namespaces = platform,conscrypt
+additional.namespaces = platform,conscrypt,runtime
# Keep in sync with the runtime namespace in /system/etc/ld.config.txt.
namespace.default.isolated = true
@@ -54,3 +54,16 @@
namespace.conscrypt.link.platform.shared_libs = libc.so
namespace.conscrypt.link.platform.shared_libs += libm.so
namespace.conscrypt.link.platform.shared_libs += libdl.so
+
+###############################################################################
+# "runtime" APEX namespace
+#
+# This namespace is an alias for the default namespace.
+###############################################################################
+namespace.runtime.isolated = true
+namespace.runtime.visible = true
+namespace.runtime.links = default
+namespace.runtime.link.default.allow_all_shared_libs = true
+namespace.runtime.links += platform
+# TODO(b/119867084): Restrict fallback to platform namespace to PALette library.
+namespace.runtime.link.platform.allow_all_shared_libs = true
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());
diff --git a/runtime/jni/java_vm_ext_test.cc b/runtime/jni/java_vm_ext_test.cc
index dfe50cf..4a7b1ca 100644
--- a/runtime/jni/java_vm_ext_test.cc
+++ b/runtime/jni/java_vm_ext_test.cc
@@ -109,6 +109,7 @@
}
TEST_F(JavaVmExtTest, AttachCurrentThread_SmallStack) {
+ TEST_DISABLED_FOR_MEMORY_TOOL(); // b/123500163
pthread_t pthread;
pthread_attr_t attr;
const char* reason = __PRETTY_FUNCTION__;
diff --git a/runtime/runtime.cc b/runtime/runtime.cc
index a86bc94..feade83 100644
--- a/runtime/runtime.cc
+++ b/runtime/runtime.cc
@@ -1752,7 +1752,8 @@
// libcore can't because it's the library that implements System.loadLibrary!
{
std::string error_msg;
- if (!java_vm_->LoadNativeLibrary(env, "libjavacore.so", nullptr, nullptr, &error_msg)) {
+ if (!java_vm_->LoadNativeLibrary(
+ env, "libjavacore.so", nullptr, WellKnownClasses::java_lang_Object, &error_msg)) {
LOG(FATAL) << "LoadNativeLibrary failed for \"libjavacore.so\": " << error_msg;
}
}
@@ -1761,7 +1762,8 @@
? "libopenjdkd.so"
: "libopenjdk.so";
std::string error_msg;
- if (!java_vm_->LoadNativeLibrary(env, kOpenJdkLibrary, nullptr, nullptr, &error_msg)) {
+ if (!java_vm_->LoadNativeLibrary(
+ env, kOpenJdkLibrary, nullptr, WellKnownClasses::java_lang_Object, &error_msg)) {
LOG(FATAL) << "LoadNativeLibrary failed for \"" << kOpenJdkLibrary << "\": " << error_msg;
}
}