aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Sylve <joe.sylve@gmail.com>2016-01-10 23:23:51 -0600
committerRuss Cox <rsc@golang.org>2016-01-13 18:24:38 +0000
commit9efc46f1cbedc8971c99a49b0c2736fece13135e (patch)
tree4b23dc98b2a9a7a0c98840c63b4a396f9939d146
parent4206e9d343e07f3b2f6c0fe7d5d93c30024eaa96 (diff)
downloadgo-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-xmisc/cgo/testcshared/test.bash2
-rw-r--r--src/cmd/dist/test.go2
-rw-r--r--src/cmd/go/build.go2
-rw-r--r--src/cmd/link/internal/ld/lib.go2
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")