From 413cc744b8c45838895aa81f75d22f856ef99a9e Mon Sep 17 00:00:00 2001 From: Jiyong Park Date: Tue, 19 Jun 2018 01:46:06 +0900 Subject: [PATCH] Recovery partition uses the first architecture only To save space in the recovery partition, modules installed to the partition are restricted to be built in the first architecure (i.e., 32bit for 32bit-only device or when TARGET_PREFER_32_BIT is true, and 64bit otherwise). Most notably, this change removes the 32-bit variant of the linker (about 1MB). The linker was installed regardless of whether there is a 32-bit executable or not. Now, the unnecessary linker is not installed and it is guaranteed that all modules in the partition are built with the same architecture. Bug: 79146551 Test: m -j Test: out/target/product//recovery/root/system/bin/ has only one variant of the linker. Change-Id: I4070a43555bad4cfa8eff5253b09dcd004ea8251 --- cc/cc.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/cc/cc.go b/cc/cc.go index 6438bcd77..b7183d7ae 100644 --- a/cc/cc.go +++ b/cc/cc.go @@ -1569,6 +1569,19 @@ func imageMutator(mctx android.BottomUpMutatorContext) { recoveryVariantNeeded = true } + if recoveryVariantNeeded { + var recoveryMultilib string + if mctx.Config().DevicePrefer32BitExecutables() { + recoveryMultilib = "lib32" + } else { + recoveryMultilib = "lib64" + } + multilib := genrule.Target().Arch.ArchType.Multilib + if multilib != recoveryMultilib { + recoveryVariantNeeded = false + } + } + var variants []string if coreVariantNeeded { variants = append(variants, coreMode) @@ -1676,6 +1689,19 @@ func imageMutator(mctx android.BottomUpMutatorContext) { coreVariantNeeded = false } + if recoveryVariantNeeded { + var recoveryMultilib string + if mctx.Config().DevicePrefer32BitExecutables() { + recoveryMultilib = "lib32" + } else { + recoveryMultilib = "lib64" + } + multilib := m.Target().Arch.ArchType.Multilib + if multilib != recoveryMultilib { + recoveryVariantNeeded = false + } + } + var variants []string if coreVariantNeeded { variants = append(variants, coreMode)