From: David Crawshaw Date: Mon, 19 Oct 2015 16:54:38 +0000 (-0400) Subject: cmd/go: -buildmode=pie for android/arm X-Git-Tag: go1.6beta1~805 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=17a256bf22352c2beb9fc25ff76462fb16f3e6b2;p=gostls13.git cmd/go: -buildmode=pie for android/arm Also make PIE executables the default build mode, as PIE executables are required as of Android L. For #10807 Change-Id: I86b7556b9792105cd2531df1b8f3c8f7a8c5d25c Reviewed-on: https://go-review.googlesource.com/16055 Reviewed-by: Ian Lance Taylor Run-TryBot: David Crawshaw --- 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 {