diff --git a/src/cmd/go/build.go b/src/cmd/go/build.go index 677e34c2b1..d4aeb705e7 100644 --- a/src/cmd/go/build.go +++ b/src/cmd/go/build.go @@ -353,10 +353,28 @@ func buildModeInit() { } ldBuildmode = "c-shared" case "default": - ldBuildmode = "exe" + switch platform { + case "android/arm": + codegenArg = "-shared" + ldBuildmode = "pie" + default: + ldBuildmode = "exe" + } case "exe": pkgsFilter = pkgsMain ldBuildmode = "exe" + case "pie": + if gccgo { + fatalf("-buildmode=pie not supported by gccgo") + } else { + switch platform { + case "android/arm": + codegenArg = "-shared" + default: + fatalf("-buildmode=pie not supported on %s\n", platform) + } + } + ldBuildmode = "pie" case "shared": pkgsFilter = pkgsNotMain if gccgo {