diff options
author | Joe Sylve <joe.sylve@gmail.com> | 2016-01-10 23:23:51 -0600 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2016-01-13 18:24:38 +0000 |
commit | 9efc46f1cbedc8971c99a49b0c2736fece13135e (patch) | |
tree | 4b23dc98b2a9a7a0c98840c63b4a396f9939d146 | |
parent | 4206e9d343e07f3b2f6c0fe7d5d93c30024eaa96 (diff) | |
download | go-9efc46f1cbedc8971c99a49b0c2736fece13135e.tar.gz go-9efc46f1cbedc8971c99a49b0c2736fece13135e.zip |
cmd/go: -buildmode=c-shared should work on darwin/386
* 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>
-rwxr-xr-x | misc/cgo/testcshared/test.bash | 2 | ||||
-rw-r--r-- | src/cmd/dist/test.go | 2 | ||||
-rw-r--r-- | src/cmd/go/build.go | 2 | ||||
-rw-r--r-- | src/cmd/link/internal/ld/lib.go | 2 |
4 files changed, 4 insertions, 4 deletions
diff --git a/misc/cgo/testcshared/test.bash b/misc/cgo/testcshared/test.bash index 4446402ad9..23c97675bb 100755 --- a/misc/cgo/testcshared/test.bash +++ b/misc/cgo/testcshared/test.bash @@ -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 diff --git a/src/cmd/dist/test.go b/src/cmd/dist/test.go index 9e0412e05b..4cd696a0a1 100644 --- a/src/cmd/dist/test.go +++ b/src/cmd/dist/test.go @@ -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 } diff --git a/src/cmd/go/build.go b/src/cmd/go/build.go index 825fdac5b8..565ccec591 100644 --- a/src/cmd/go/build.go +++ b/src/cmd/go/build.go @@ -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) } diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go index 5bb206afa8..75612503b1 100644 --- a/src/cmd/link/internal/ld/lib.go +++ b/src/cmd/link/internal/ld/lib.go @@ -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") |