From 17a256bf22352c2beb9fc25ff76462fb16f3e6b2 Mon Sep 17 00:00:00 2001 From: David Crawshaw Date: Mon, 19 Oct 2015 12:54:38 -0400 Subject: [PATCH] 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 --- src/cmd/go/build.go | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) 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 { -- 2.50.0