]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/dist: set buildmode=pie on Android
authorElias Naur <mail@eliasnaur.com>
Sun, 7 Apr 2019 14:58:13 +0000 (16:58 +0200)
committerElias Naur <mail@eliasnaur.com>
Mon, 8 Apr 2019 18:28:43 +0000 (18:28 +0000)
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 <mail@eliasnaur.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
src/cmd/dist/build.go

index e5d4b2458a23f577cf595fbe1938bafb853cb44e..fec3b2cedc833b8fc4e8461d3edea13720835512 100644 (file)
@@ -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