From 81c7beb04eda3ecc97e723793e11c61732ff37e8 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Sun, 7 Apr 2019 16:58:13 +0200 Subject: [PATCH] cmd/dist: set buildmode=pie on Android Android refuses to run non-PIE binaries, a restriction already encoded in the cmd/go tool's buildModeInit function. This CL adds the necessary flags to cmd/dist to make ./make.bash run on an Android device. Change-Id: I162084f573befaa41dcb47a2b78448bce5b83d35 Reviewed-on: https://go-review.googlesource.com/c/go/+/170943 Run-TryBot: Elias Naur TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor Reviewed-by: Emmanuel Odeke --- src/cmd/dist/build.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go index e5d4b2458a..fec3b2cedc 100644 --- a/src/cmd/dist/build.go +++ b/src/cmd/dist/build.go @@ -657,7 +657,11 @@ func runInstall(dir string, ch chan struct{}) { if elem == "go" { elem = "go_bootstrap" } - link = []string{pathf("%s/link", tooldir), "-o", pathf("%s/%s%s", tooldir, elem, exe)} + link = []string{pathf("%s/link", tooldir)} + if goos == "android" { + link = append(link, "-buildmode=pie") + } + link = append(link, "-o", pathf("%s/%s%s", tooldir, elem, exe)) targ = len(link) - 1 } ttarg := mtime(link[targ]) @@ -862,6 +866,9 @@ func runInstall(dir string, ch chan struct{}) { // compiler to generate ABI wrappers for everything. compile = append(compile, "-allabis") } + if goos == "android" { + compile = append(compile, "-shared") + } compile = append(compile, gofiles...) var wg sync.WaitGroup -- 2.50.0