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
(cherry picked from commit d68580ee6508bd9d5aa6bbdef33f79b8c2cbcf85)
Change-Id: Ibb0f181f32474eaedef7a8aa4b441cec8899b8c3
Merged-In: Ie4a75d72a8be3c1252c6b49b29d680dc641b6b61
diff --git a/build/apex/Android.bp b/build/apex/Android.bp
index 738a870..22510ef 100644
--- a/build/apex/Android.bp
+++ b/build/apex/Android.bp
@@ -8,9 +8,12 @@
art_runtime_base_binaries_both = [
"dalvikvm",
]
-// - Base requirements (binaries for which a 32-bit version is preferred).
-art_runtime_base_binaries_prefer32 = [
+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 = [
"dexoptanalyzer",
"profman",
]
@@ -61,16 +64,13 @@
"linker",
]
-// - Debug variants (binaries for which a 32-bit version is preferred).
-art_runtime_debug_binaries_prefer32 = [
+// - 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 = [
"dexoptanalyzerd",
"profmand",
]
-art_runtime_debug_binaries_prefer32_device = [
- "dex2oatd",
-]
-
-art_runtime_debug_binaries_both_host = [
+art_runtime_debug_binaries_both_on_device_first_on_host = [
"dex2oatd",
]
@@ -218,10 +218,11 @@
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,
+ binaries: art_runtime_base_binaries_prefer32_on_device_first_on_host,
},
first: {
binaries: art_tools_common_binaries +
@@ -246,11 +247,11 @@
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 +
- art_runtime_debug_binaries_prefer32_device,
+ binaries: art_runtime_debug_binaries_prefer32_on_device_first_on_host,
},
first: {
binaries: art_tools_debug_binaries +
@@ -336,15 +337,16 @@
multilib: {
both: {
binaries: art_runtime_base_binaries_both +
- art_runtime_debug_binaries_both_host +
art_tools_debug_binaries_both,
},
first: {
- binaries: art_tools_common_binaries + // Host APEX is always debug.
- art_tools_debug_binaries +
- art_tools_host_only_binaries +
- art_runtime_base_binaries_prefer32 +
- art_runtime_debug_binaries_prefer32,
+ 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,
},
},
key: "com.android.art.key",
diff --git a/build/apex/art_apex_test.py b/build/apex/art_apex_test.py
index bf0f543..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_symlinked_multilib_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 60d12c8..fb76dd9 100644
--- a/dex2oat/Android.bp
+++ b/dex2oat/Android.bp
@@ -187,8 +187,7 @@
target: {
android: {
- // Use the 32-bit version of dex2oat on devices.
- compile_multilib: "prefer32",
+ compile_multilib: "both",
},
},
header_libs: [
@@ -256,6 +255,15 @@
"libart-dex2oat",
],
+ multilib: {
+ lib32: {
+ suffix: "32",
+ },
+ lib64: {
+ suffix: "64",
+ },
+ },
+
pgo: {
// Additional cflags just for dex2oat during PGO instrumentation
cflags: [
@@ -284,18 +292,9 @@
// account. Note that this override cannot be in cc_default because
// it'd get overridden by the load hook even when it uses
// PrependProperties.
- compile_multilib: "both",
+ compile_multilib: "64",
symlink_preferred_arch: true,
},
- linux_glibc_x86: {
- suffix: "32",
- },
- linux_glibc_x86_64: {
- suffix: "64",
- },
- linux_bionic_x86_64: {
- suffix: "64",
- },
},
apex_available: [
"com.android.art.release",
@@ -332,7 +331,6 @@
static_libs: [
"libz",
],
- compile_multilib: "prefer32",
},
host: {
shared_libs: [
@@ -345,22 +343,22 @@
// account. Note that this override cannot be in cc_default because
// it'd get overridden by the load hook even when it uses
// PrependProperties.
- compile_multilib: "both",
+ compile_multilib: "64",
symlink_preferred_arch: true,
},
- linux_glibc_x86: {
- suffix: "32",
- },
- linux_glibc_x86_64: {
- suffix: "64",
- },
- linux_bionic_x86_64: {
- suffix: "64",
- },
},
apex_available: [
"com.android.art.debug",
],
+
+ multilib: {
+ lib32: {
+ suffix: "32",
+ },
+ lib64: {
+ suffix: "64",
+ },
+ },
}
cc_defaults {