Put dex2oat32 and dex2oat64 in the ART apex.
Required to move to dex2oat64 on some devices.
Test: m && art_apex_test
Test: art/build/apex/runtests.sh
Bug: 153380900
Change-Id: Ie4a75d72a8be3c1252c6b49b29d680dc641b6b61
diff --git a/build/apex/Android.bp b/build/apex/Android.bp
index 4d96d6d..706fa96 100644
--- a/build/apex/Android.bp
+++ b/build/apex/Android.bp
@@ -8,10 +8,12 @@
art_runtime_base_binaries_both = [
"dalvikvm",
]
+art_runtime_base_binaries_both_on_device_first_on_host = [
+ "dex2oat",
+]
// - Base requirements (binaries for which a 32-bit version is preferred on device, but for which
// only the "first" (likely 64-bit) version is required on host).
art_runtime_base_binaries_prefer32_on_device_first_on_host = [
- "dex2oat",
"dexoptanalyzer",
"profman",
]
@@ -66,10 +68,12 @@
// - Debug variants (binaries for which a 32-bit version is preferred on device, but for which
// only the "first" (likely 64-bit) version is required on host).
art_runtime_debug_binaries_prefer32_on_device_first_on_host = [
- "dex2oatd",
"dexoptanalyzerd",
"profmand",
]
+art_runtime_debug_binaries_both_on_device_first_on_host = [
+ "dex2oatd",
+]
// - Debug variants (libraries).
art_runtime_debug_native_shared_libs = [
@@ -208,7 +212,8 @@
libcore_native_shared_libs,
multilib: {
both: {
- binaries: art_runtime_base_binaries_both,
+ binaries: art_runtime_base_binaries_both +
+ art_runtime_base_binaries_both_on_device_first_on_host,
},
prefer32: {
binaries: art_runtime_base_binaries_prefer32_on_device_first_on_host,
@@ -235,7 +240,8 @@
libcore_debug_native_shared_libs,
multilib: {
both: {
- binaries: art_tools_debug_binaries_both,
+ binaries: art_tools_debug_binaries_both +
+ art_runtime_debug_binaries_both_on_device_first_on_host,
},
prefer32: {
binaries: art_runtime_debug_binaries_prefer32_on_device_first_on_host,
@@ -328,7 +334,9 @@
},
first: {
binaries: art_runtime_base_binaries_prefer32_on_device_first_on_host +
+ art_runtime_base_binaries_both_on_device_first_on_host +
art_runtime_debug_binaries_prefer32_on_device_first_on_host +
+ art_runtime_debug_binaries_both_on_device_first_on_host +
art_tools_common_binaries +
art_tools_debug_binaries + // Host APEX is always debug.
art_tools_host_only_binaries,
diff --git a/build/apex/art_apex_test.py b/build/apex/art_apex_test.py
index aa07fe2..6bccdf5 100755
--- a/build/apex/art_apex_test.py
+++ b/build/apex/art_apex_test.py
@@ -389,10 +389,18 @@
"""Check bin/filename32, and/or bin/filename64, with symlink bin/filename."""
raise NotImplementedError
+ def check_symlinked_first_executable(self, filename):
+ """Check bin/filename32, and/or bin/filename64, with symlink bin/filename."""
+ raise NotImplementedError
+
def check_multilib_executable(self, filename):
"""Check bin/filename for 32 bit, and/or bin/filename64."""
raise NotImplementedError
+ def check_first_executable(self, filename):
+ """Check bin/filename for 32 bit, and/or bin/filename64."""
+ raise NotImplementedError
+
def check_native_library(self, basename):
"""Check lib/basename.so, and/or lib64/basename.so."""
raise NotImplementedError
@@ -411,8 +419,15 @@
self.check_executable('%s32' % filename)
self.check_executable_symlink(filename)
+ def check_symlinked_first_executable(self, filename):
+ self.check_executable('%s32' % filename)
+ self.check_executable_symlink(filename)
+
def check_multilib_executable(self, filename):
- self.check_executable(filename)
+ self.check_executable('%s32' % filename)
+
+ def check_first_executable(self, filename):
+ self.check_executable('%s32' % filename)
def check_native_library(self, basename):
# TODO: Use $TARGET_ARCH (e.g. check whether it is "arm" or "arm64") to improve
@@ -431,9 +446,16 @@
self.check_executable('%s64' % filename)
self.check_executable_symlink(filename)
+ def check_symlinked_first_executable(self, filename):
+ self.check_executable('%s64' % filename)
+ self.check_executable_symlink(filename)
+
def check_multilib_executable(self, filename):
self.check_executable('%s64' % filename)
+ def check_first_executable(self, filename):
+ self.check_executable('%s64' % filename)
+
def check_native_library(self, basename):
# TODO: Use $TARGET_ARCH (e.g. check whether it is "arm" or "arm64") to improve
# the precision of this test?
@@ -452,9 +474,16 @@
self.check_executable('%s64' % filename)
self.check_executable_symlink(filename)
+ def check_symlinked_first_executable(self, filename):
+ self.check_executable('%s64' % filename)
+ self.check_executable_symlink(filename)
+
def check_multilib_executable(self, filename):
self.check_executable('%s64' % filename)
- self.check_executable(filename)
+ self.check_executable('%s32' % filename)
+
+ def check_first_executable(self, filename):
+ self.check_executable('%s64' % filename)
def check_native_library(self, basename):
# TODO: Use $TARGET_ARCH (e.g. check whether it is "arm" or "arm64") to improve
@@ -482,7 +511,7 @@
self._checker.check_file('apex_manifest.pb')
# Check binaries for ART.
- self._checker.check_executable('dex2oat')
+ self._checker.check_first_executable('dex2oat')
self._checker.check_executable('dexdump')
self._checker.check_executable('dexlist')
self._checker.check_executable('dexoptanalyzer')
@@ -579,6 +608,7 @@
# Check binaries for ART.
self._checker.check_executable('oatdump')
+ self._checker.check_multilib_executable('dex2oat')
# Check internal libraries for ART.
self._checker.check_prefer64_library('libart-disassembler')
@@ -614,7 +644,8 @@
def run(self):
# Check binaries for ART.
self._checker.check_executable('hprof-conv')
- self._checker.check_executable('dex2oatd')
+ self._checker.check_symlinked_first_executable('dex2oatd')
+ self._checker.check_symlinked_first_executable('dex2oat')
# Check exported native libraries for Managed Core Library.
self._checker.check_native_library('libandroidicu-host')
@@ -674,7 +705,8 @@
def run(self):
# Check ART debug binaries.
- self._checker.check_executable('dex2oatd')
+ self._checker.check_multilib_executable('dex2oatd')
+ self._checker.check_multilib_executable('dex2oat')
self._checker.check_executable('oatdumpd')
# Check ART internal libraries.
diff --git a/dex2oat/Android.bp b/dex2oat/Android.bp
index 4a72faa..0e82704 100644
--- a/dex2oat/Android.bp
+++ b/dex2oat/Android.bp
@@ -181,8 +181,7 @@
target: {
android: {
- // Use the 32-bit version of dex2oat on devices.
- compile_multilib: "prefer32",
+ compile_multilib: "both",
},
},
header_libs: [
@@ -250,6 +249,15 @@
"libart-dex2oat",
],
+ multilib: {
+ lib32: {
+ suffix: "32",
+ },
+ lib64: {
+ suffix: "64",
+ },
+ },
+
pgo: {
// Additional cflags just for dex2oat during PGO instrumentation
cflags: [
@@ -279,6 +287,7 @@
// it'd get overridden by the load hook even when it uses
// PrependProperties.
compile_multilib: "64",
+ symlink_preferred_arch: true,
},
},
apex_available: [
@@ -316,7 +325,6 @@
static_libs: [
"libz",
],
- compile_multilib: "prefer32",
},
host: {
shared_libs: [
@@ -330,11 +338,21 @@
// it'd get overridden by the load hook even when it uses
// PrependProperties.
compile_multilib: "64",
+ symlink_preferred_arch: true,
},
},
apex_available: [
"com.android.art.debug",
],
+
+ multilib: {
+ lib32: {
+ suffix: "32",
+ },
+ lib64: {
+ suffix: "64",
+ },
+ },
}
cc_defaults {