Revert "Prohibit static executable in APEX"

This reverts commit 3a8130c797cd762427698f6a6245bba4c84c2e4b.

Reason for revert: Build failed.

Change-Id: I28c72c8c3adaeb23bff9bffe3994971aa3f2e4f4
diff --git a/apex/apex.go b/apex/apex.go
index e8bb9b7..0857946 100644
--- a/apex/apex.go
+++ b/apex/apex.go
@@ -1696,7 +1696,6 @@
 	a.checkUpdatable(ctx)
 	a.checkMinSdkVersion(ctx)
 	a.checkStaticLinkingToStubLibraries(ctx)
-	a.checkStaticExecutables(ctx)
 	if len(a.properties.Tests) > 0 && !a.testApex {
 		ctx.PropertyErrorf("tests", "property allowed only in apex_test module type")
 		return
@@ -2488,35 +2487,6 @@
 	})
 }
 
-// checkStaticExecutable ensures that executables in an APEX are not static.
-func (a *apexBundle) checkStaticExecutables(ctx android.ModuleContext) {
-	ctx.VisitDirectDepsBlueprint(func(module blueprint.Module) {
-		if ctx.OtherModuleDependencyTag(module) != executableTag {
-			return
-		}
-		if cc, ok := module.(*cc.Module); ok && cc.StaticExecutable() {
-			apex := a.ApexVariationName()
-			exec := ctx.OtherModuleName(module)
-			if isStaticExecutableAllowed(apex, exec) {
-				return
-			}
-			ctx.ModuleErrorf("executable %s is static", ctx.OtherModuleName(module))
-		}
-	})
-}
-
-// A small list of exceptions where static executables are allowed in APEXes.
-func isStaticExecutableAllowed(apex string, exec string) bool {
-	m := map[string][]string{
-		"com.android.runtime": []string{
-			"linker",
-			"linkerconfig",
-		},
-	}
-	execNames, ok := m[apex]
-	return ok && android.InList(exec, execNames)
-}
-
 // Collect information for opening IDE project files in java/jdeps.go.
 func (a *apexBundle) IDEInfo(dpInfo *android.IdeInfo) {
 	dpInfo.Deps = append(dpInfo.Deps, a.properties.Java_libs...)
diff --git a/apex/apex_test.go b/apex/apex_test.go
index 1645c99..f58bf6c 100644
--- a/apex/apex_test.go
+++ b/apex/apex_test.go
@@ -374,6 +374,7 @@
 			symlinks: ["foo_link_"],
 			symlink_preferred_arch: true,
 			system_shared_libs: [],
+			static_executable: true,
 			stl: "none",
 			apex_available: [ "myapex", "com.android.gki.*" ],
 		}
@@ -2493,6 +2494,7 @@
 			srcs: ["mylib.cpp"],
 			relative_install_path: "foo/bar",
 			system_shared_libs: [],
+			static_executable: true,
 			stl: "none",
 			apex_available: [ "myapex" ],
 		}
@@ -2552,6 +2554,7 @@
 			name: "mybin",
 			relative_install_path: "foo/bar",
 			system_shared_libs: [],
+			static_executable: true,
 			stl: "none",
 			apex_available: [ "myapex" ],
 			native_bridge_supported: true,
@@ -8185,33 +8188,6 @@
 	}
 }
 
-func TestProhibitStaticExecutable(t *testing.T) {
-	testApexError(t, `executable mybin is static`, `
-		apex {
-			name: "myapex",
-			key: "myapex.key",
-			binaries: ["mybin"],
-			min_sdk_version: "29",
-		}
-
-		apex_key {
-			name: "myapex.key",
-			public_key: "testkey.avbpubkey",
-			private_key: "testkey.pem",
-		}
-
-		cc_binary {
-			name: "mybin",
-			srcs: ["mylib.cpp"],
-			relative_install_path: "foo/bar",
-			static_executable: true,
-			system_shared_libs: [],
-			stl: "none",
-			apex_available: [ "myapex" ],
-		}
-	`)
-}
-
 func TestMain(m *testing.M) {
 	os.Exit(m.Run())
 }