]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: -buildmode=c-shared should work on darwin/386
authorJoe Sylve <joe.sylve@gmail.com>
Mon, 11 Jan 2016 05:23:51 +0000 (23:23 -0600)
committerRuss Cox <rsc@golang.org>
Wed, 13 Jan 2016 18:24:38 +0000 (18:24 +0000)
* Enable c-shared buildmode on darwin/386
* dyld does not support text relocation on i386. Add -read_only_relocs suppress flag to linker

Fixes #13904

Change-Id: I9adbd20d3f36ce9bbccf1bffb746b391780d088f
Reviewed-on: https://go-review.googlesource.com/18500
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
misc/cgo/testcshared/test.bash
src/cmd/dist/test.go
src/cmd/go/build.go
src/cmd/link/internal/ld/lib.go

index 4446402ad9ddbc7ed4056021129f0a064665552d..23c97675bb3e9e382278cdd0fa26d27042b2bbb5 100755 (executable)
@@ -27,7 +27,7 @@ fi
 # Directory where cgo headers and outputs will be installed.
 # The installation directory format varies depending on the platform.
 installdir=pkg/${goos}_${goarch}_testcshared_shared
-if [ "${goos}/${goarch}" == "darwin/amd64" ]; then
+if [ "${goos}" == "darwin" ]; then
        installdir=pkg/${goos}_${goarch}_testcshared
 fi
 
index 9e0412e05bbaf5819879c7f144f6e592da001fd8..4cd696a0a17de35b131f5dd322f8ac298cae18e6 100644 (file)
@@ -656,7 +656,7 @@ func (t *tester) supportedBuildmode(mode string) bool {
        case "c-shared":
                switch pair {
                case "linux-386", "linux-amd64", "linux-arm", "linux-arm64",
-                       "darwin-amd64",
+                       "darwin-amd64", "darwin-386",
                        "android-arm", "android-arm64", "android-386":
                        return true
                }
index 825fdac5b8fc9e8eb89e28bbbd824907d3e8a4ee..565ccec591487c29a040c1063427b65ca5826662 100644 (file)
@@ -354,7 +354,7 @@ func buildModeInit() {
                        case "linux/amd64", "linux/arm", "linux/arm64", "linux/386",
                                "android/amd64", "android/arm", "android/arm64", "android/386":
                                codegenArg = "-shared"
-                       case "darwin/amd64":
+                       case "darwin/amd64", "darwin/386":
                        default:
                                fatalf("-buildmode=c-shared not supported on %s\n", platform)
                        }
index 5bb206afa80bcdfbf1237f560b4a117ce6d78dc7..75612503b1e31126eeab11cc7c12905c4e6f8d5d 100644 (file)
@@ -1068,7 +1068,7 @@ func hostlink() {
                argv = append(argv, "-pie")
        case BuildmodeCShared:
                if HEADTYPE == obj.Hdarwin {
-                       argv = append(argv, "-dynamiclib")
+                       argv = append(argv, "-dynamiclib", "-Wl,-read_only_relocs,suppress")
                } else {
                        // ELF.
                        argv = append(argv, "-Wl,-Bsymbolic")