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")