]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go, cmd/link: allow -buildmode=pie on linux/ppc64le
authorMichael Hudson-Doyle <michael.hudson@canonical.com>
Sun, 11 Oct 2015 23:32:03 +0000 (12:32 +1300)
committerMichael Hudson-Doyle <michael.hudson@canonical.com>
Sun, 8 Nov 2015 20:31:26 +0000 (20:31 +0000)
Change-Id: I0d0abbb9503c3a3c35d846fc0379836b2c483dea
Reviewed-on: https://go-review.googlesource.com/15962
Reviewed-by: Russ Cox <rsc@golang.org>
Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/go/alldocs.go
src/cmd/go/build.go
src/cmd/link/internal/ppc64/obj.go

index 001133b0caccdefdbd7254240ee466d3bed96945..7e4892ccd1fbe6f307fabb1ea09efcd98d3e6547 100644 (file)
@@ -122,7 +122,7 @@ and test commands:
                arguments to pass on each go tool link invocation.
        -linkshared
                link against shared libraries previously created with
-               -buildmode=shared
+               -buildmode=shared.
        -pkgdir dir
                install and load all packages from dir instead of the usual locations.
                For example, when building with a non-standard configuration,
index e869b27927e9532d83ebafd9c41afedb1c1273df..e62075379a3a1a901b67f9ea69a154c95fbc1e35 100644 (file)
@@ -101,7 +101,7 @@ and test commands:
                arguments to pass on each go tool link invocation.
        -linkshared
                link against shared libraries previously created with
-               -buildmode=shared
+               -buildmode=shared.
        -pkgdir dir
                install and load all packages from dir instead of the usual locations.
                For example, when building with a non-standard configuration,
@@ -332,6 +332,9 @@ func buildModeInit() {
        _, gccgo := buildToolchain.(gccgoToolchain)
        var codegenArg string
        platform := goos + "/" + goarch
+       if buildBuildmode != "default" {
+               buildAsmflags = append(buildAsmflags, "-D=GOBUILDMODE_"+strings.Replace(buildBuildmode, "-", "_", -1)+"=1")
+       }
        switch buildBuildmode {
        case "archive":
                pkgsFilter = pkgsNotMain
@@ -375,7 +378,7 @@ func buildModeInit() {
                        fatalf("-buildmode=pie not supported by gccgo")
                } else {
                        switch platform {
-                       case "android/arm", "linux/amd64", "android/amd64":
+                       case "android/arm", "linux/amd64", "android/amd64", "linux/ppc64le":
                                codegenArg = "-shared"
                        default:
                                fatalf("-buildmode=pie not supported on %s\n", platform)
@@ -389,7 +392,6 @@ func buildModeInit() {
                } else {
                        switch platform {
                        case "linux/386", "linux/amd64", "linux/arm", "linux/arm64":
-                               buildAsmflags = append(buildAsmflags, "-D=GOBUILDMODE_shared=1")
                        default:
                                fatalf("-buildmode=shared not supported on %s\n", platform)
                        }
@@ -407,7 +409,7 @@ func buildModeInit() {
                        codegenArg = "-fPIC"
                } else {
                        switch platform {
-                       case "linux/386", "linux/amd64", "linux/arm", "linux/arm64":
+                       case "linux/386", "linux/amd64", "linux/arm", "linux/arm64", "linux/ppc64le":
                                buildAsmflags = append(buildAsmflags, "-D=GOBUILDMODE_shared=1")
                        default:
                                fatalf("-buildmode=shared not supported on %s\n", platform)
index d663b6ebae0d16a7ce78bbd63dc46fcca285bc4a..e2c98fc59e074db5833804157ff801d053c8fb31 100644 (file)
@@ -98,6 +98,11 @@ func archinit() {
                ld.Linkmode = ld.LinkInternal
        }
 
+       switch ld.Buildmode {
+       case ld.BuildmodePIE:
+               ld.Linkmode = ld.LinkExternal
+       }
+
        switch ld.HEADTYPE {
        default:
                if ld.Linkmode == ld.LinkAuto {