Fix: recovery module is disabled on 32-bit targets

Fixed a bug that recovery variant of a module is not created on 32-bit
targets. The bug was happening because the creation of the recovery
variant relied on DevicePrefer32BitExecutables() which returns false
for 32-bit only targets.

Now, recovery variant is checked against the primary architecture of the
device that is returned by DevicePrimaryArchType().

Test: m -j adbd.recovery on aosp_arm and aosp_arm64
adbd is built under recovery/root/system/bin and it is ELF32 and ELF64,
respectively for the targets.
Test: m -j libc.recovery on aosp_arm, aosp_arm64, aosp_sailfish
and the x86+arm target in mater. Only one libc.so is installed
under recovery/root/system/lib (or lib64).

Change-Id: I83a248d81f2c71dcfb0e9d887a75b71338f27b4d
diff --git a/cc/cc.go b/cc/cc.go
index 592f373..8d05038 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -1570,14 +1570,9 @@
 			}
 
 			if recoveryVariantNeeded {
-				var recoveryMultilib string
-				if mctx.Config().DevicePrefer32BitExecutables() {
-					recoveryMultilib = "lib32"
-				} else {
-					recoveryMultilib = "lib64"
-				}
-				multilib := genrule.Target().Arch.ArchType.Multilib
-				if multilib != recoveryMultilib {
+				primaryArch := mctx.Config().DevicePrimaryArchType()
+				moduleArch := genrule.Target().Arch.ArchType
+				if moduleArch != primaryArch {
 					recoveryVariantNeeded = false
 				}
 			}
@@ -1690,14 +1685,9 @@
 	}
 
 	if recoveryVariantNeeded {
-		var recoveryMultilib string
-		if mctx.Config().DevicePrefer32BitExecutables() {
-			recoveryMultilib = "lib32"
-		} else {
-			recoveryMultilib = "lib64"
-		}
-		multilib := m.Target().Arch.ArchType.Multilib
-		if multilib != recoveryMultilib {
+		primaryArch := mctx.Config().DevicePrimaryArchType()
+		moduleArch := m.Target().Arch.ArchType
+		if moduleArch != primaryArch {
 			recoveryVariantNeeded = false
 		}
 	}