summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Nicolas Geoffray <ngeoffray@google.com> 2020-04-15 16:52:32 +0100
committer Nicolas Geoffray <ngeoffray@google.com> 2020-05-21 21:29:48 +0000
commitd21ecf68035305b36e6129f85a5088a57a31e549 (patch)
treeedb9f81da84dc22a0f492521e1609fddad4af406
parent39bb1646aa980c906c3fb86b14cd26c1187782fe (diff)
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
-rw-r--r--build/apex/Android.bp42
-rwxr-xr-xbuild/apex/art_apex_test.py42
-rw-r--r--dex2oat/Android.bp42
3 files changed, 79 insertions, 47 deletions
diff --git a/build/apex/Android.bp b/build/apex/Android.bp
index 738a8700cb..22510ef5df 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 @@ bionic_binaries_both = [
"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 @@ apex_defaults {
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 @@ apex_defaults {
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 @@ art_apex_test_host {
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 bf0f543cb1..6bccdf5926 100755
--- a/build/apex/art_apex_test.py
+++ b/build/apex/art_apex_test.py
@@ -389,10 +389,18 @@ class Checker:
"""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 @@ class Arch32Checker(Checker):
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 @@ class Arch64Checker(Checker):
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 @@ class MultilibChecker(Checker):
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 @@ class ReleaseChecker:
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 @@ class ReleaseTargetChecker:
# 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 @@ class ReleaseHostChecker:
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 @@ class DebugTargetChecker:
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 60d12c8fcb..fb76dd99d0 100644
--- a/dex2oat/Android.bp
+++ b/dex2oat/Android.bp
@@ -187,8 +187,7 @@ cc_defaults {
target: {
android: {
- // Use the 32-bit version of dex2oat on devices.
- compile_multilib: "prefer32",
+ compile_multilib: "both",
},
},
header_libs: [
@@ -256,6 +255,15 @@ art_cc_binary {
"libart-dex2oat",
],
+ multilib: {
+ lib32: {
+ suffix: "32",
+ },
+ lib64: {
+ suffix: "64",
+ },
+ },
+
pgo: {
// Additional cflags just for dex2oat during PGO instrumentation
cflags: [
@@ -284,18 +292,9 @@ art_cc_binary {
// 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 @@ art_cc_binary {
static_libs: [
"libz",
],
- compile_multilib: "prefer32",
},
host: {
shared_libs: [
@@ -345,22 +343,22 @@ art_cc_binary {
// 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: {
+ },
+ apex_available: [
+ "com.android.art.debug",
+ ],
+
+ multilib: {
+ lib32: {
suffix: "32",
},
- linux_glibc_x86_64: {
- suffix: "64",
- },
- linux_bionic_x86_64: {
+ lib64: {
suffix: "64",
},
},
- apex_available: [
- "com.android.art.debug",
- ],
}
cc_defaults {