diff --git a/misc/cgo/test/pkg_test.go b/misc/cgo/test/pkg_test.go index 08e075c022..26c50ad883 100644 --- a/misc/cgo/test/pkg_test.go +++ b/misc/cgo/test/pkg_test.go @@ -32,7 +32,7 @@ func TestCrossPackageTests(t *testing.T) { t.Skip("Can't exec cmd/go subprocess on Android.") case "darwin": switch runtime.GOARCH { - case "arm", "arm64": + case "arm64": t.Skip("Can't exec cmd/go subprocess on iOS.") } } diff --git a/misc/cgo/test/sigaltstack.go b/misc/cgo/test/sigaltstack.go index 7b3f4acbb7..f501f9ba3a 100644 --- a/misc/cgo/test/sigaltstack.go +++ b/misc/cgo/test/sigaltstack.go @@ -62,7 +62,7 @@ import ( func testSigaltstack(t *testing.T) { switch { - case runtime.GOOS == "solaris", runtime.GOOS == "illumos", runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64"): + case runtime.GOOS == "solaris", runtime.GOOS == "illumos", runtime.GOOS == "darwin" && runtime.GOARCH == "arm64": t.Skipf("switching signal stack not implemented on %s/%s", runtime.GOOS, runtime.GOARCH) case runtime.GOOS == "darwin" && runtime.GOARCH == "386": t.Skipf("sigaltstack fails on darwin/386") diff --git a/misc/cgo/test/testx.go b/misc/cgo/test/testx.go index 42979b5f4d..98c48fa383 100644 --- a/misc/cgo/test/testx.go +++ b/misc/cgo/test/testx.go @@ -159,7 +159,7 @@ func Add(x int) { } func testCthread(t *testing.T) { - if runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") { + if runtime.GOOS == "darwin" && runtime.GOARCH == "arm64" { t.Skip("the iOS exec wrapper is unable to properly handle the panic from Add") } sum.i = 0 diff --git a/misc/cgo/testcarchive/carchive_test.go b/misc/cgo/testcarchive/carchive_test.go index 82a1a5a54c..b4a046c4bc 100644 --- a/misc/cgo/testcarchive/carchive_test.go +++ b/misc/cgo/testcarchive/carchive_test.go @@ -134,7 +134,7 @@ func testMain(m *testing.M) int { } else { switch GOOS { case "darwin": - if GOARCH == "arm" || GOARCH == "arm64" { + if GOARCH == "arm64" { libbase += "_shared" } case "dragonfly", "freebsd", "linux", "netbsd", "openbsd", "solaris", "illumos": @@ -305,7 +305,7 @@ func TestEarlySignalHandler(t *testing.T) { switch GOOS { case "darwin": switch GOARCH { - case "arm", "arm64": + case "arm64": t.Skipf("skipping on %s/%s; see https://golang.org/issue/13701", GOOS, GOARCH) } case "windows": @@ -487,7 +487,7 @@ func checkSignalForwardingTest(t *testing.T) { switch GOOS { case "darwin": switch GOARCH { - case "arm", "arm64": + case "arm64": t.Skipf("skipping on %s/%s; see https://golang.org/issue/13701", GOOS, GOARCH) } case "windows": @@ -603,7 +603,7 @@ func TestExtar(t *testing.T) { if runtime.Compiler == "gccgo" { t.Skip("skipping -extar test when using gccgo") } - if runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") { + if runtime.GOOS == "darwin" && runtime.GOARCH == "arm64" { t.Skip("shell scripts are not executable on iOS hosts") } diff --git a/misc/cgo/testcshared/cshared_test.go b/misc/cgo/testcshared/cshared_test.go index cb95153abf..bd4d341820 100644 --- a/misc/cgo/testcshared/cshared_test.go +++ b/misc/cgo/testcshared/cshared_test.go @@ -108,7 +108,7 @@ func testMain(m *testing.M) int { libgodir := GOOS + "_" + GOARCH switch GOOS { case "darwin": - if GOARCH == "arm" || GOARCH == "arm64" { + if GOARCH == "arm64" { libgodir += "_shared" } case "dragonfly", "freebsd", "linux", "netbsd", "openbsd", "solaris", "illumos": diff --git a/misc/cgo/testso/so_test.go b/misc/cgo/testso/so_test.go index f94017025c..bdd6bd8468 100644 --- a/misc/cgo/testso/so_test.go +++ b/misc/cgo/testso/so_test.go @@ -20,7 +20,7 @@ import ( func requireTestSOSupported(t *testing.T) { t.Helper() switch runtime.GOARCH { - case "arm", "arm64": + case "arm64": if runtime.GOOS == "darwin" { t.Skip("No exec facility on iOS.") } diff --git a/misc/cgo/testsovar/so_test.go b/misc/cgo/testsovar/so_test.go index f94017025c..bdd6bd8468 100644 --- a/misc/cgo/testsovar/so_test.go +++ b/misc/cgo/testsovar/so_test.go @@ -20,7 +20,7 @@ import ( func requireTestSOSupported(t *testing.T) { t.Helper() switch runtime.GOARCH { - case "arm", "arm64": + case "arm64": if runtime.GOOS == "darwin" { t.Skip("No exec facility on iOS.") } diff --git a/misc/ios/clangwrap.sh b/misc/ios/clangwrap.sh index c69a9bf355..5fdbb6db4a 100755 --- a/misc/ios/clangwrap.sh +++ b/misc/ios/clangwrap.sh @@ -8,9 +8,7 @@ export IPHONEOS_DEPLOYMENT_TARGET=5.1 # cmd/cgo doesn't support llvm-gcc-4.2, so we have to use clang. CLANG=`xcrun --sdk $SDK --find clang` -if [ "$GOARCH" == "arm" ]; then - CLANGARCH="armv7" -elif [ "$GOARCH" == "arm64" ]; then +if [ "$GOARCH" == "arm64" ]; then CLANGARCH="arm64" else echo "unknown GOARCH=$GOARCH" >&2 diff --git a/src/buildall.bash b/src/buildall.bash index 18d0b0db19..dc67c0630f 100755 --- a/src/buildall.bash +++ b/src/buildall.bash @@ -42,7 +42,7 @@ gettargets() { } selectedtargets() { - gettargets | egrep -v 'android-arm|darwin-arm' | egrep "$pattern" + gettargets | egrep -v 'android-arm|darwin-arm64' | egrep "$pattern" } # put linux first in the target list to get all the architectures up front. diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go index ab55a98b74..9e2b4f33b8 100644 --- a/src/cmd/dist/build.go +++ b/src/cmd/dist/build.go @@ -1461,8 +1461,8 @@ func wrapperPathFor(goos, goarch string) string { if gohostos != "android" { return pathf("%s/misc/android/go_android_exec.go", goroot) } - case goos == "darwin" && (goarch == "arm" || goarch == "arm64"): - if gohostos != "darwin" || (gohostarch != "arm" && gohostarch != "arm64") { + case goos == "darwin" && goarch == "arm64": + if gohostos != "darwin" || gohostarch != "arm64" { return pathf("%s/misc/ios/go_darwin_arm_exec.go", goroot) } } diff --git a/src/cmd/dist/test.go b/src/cmd/dist/test.go index 0ab5e6e3b6..a7ef8f27d5 100644 --- a/src/cmd/dist/test.go +++ b/src/cmd/dist/test.go @@ -887,7 +887,7 @@ func (t *tester) addCmd(dt *distTest, dir string, cmdline ...interface{}) *exec. } func (t *tester) iOS() bool { - return goos == "darwin" && (goarch == "arm" || goarch == "arm64") + return goos == "darwin" && goarch == "arm64" } func (t *tester) out(v string) { @@ -902,7 +902,7 @@ func (t *tester) extLink() bool { switch pair { case "aix-ppc64", "android-arm", "android-arm64", - "darwin-386", "darwin-amd64", "darwin-arm", "darwin-arm64", + "darwin-386", "darwin-amd64", "darwin-arm64", "dragonfly-amd64", "freebsd-386", "freebsd-amd64", "freebsd-arm", "linux-386", "linux-amd64", "linux-arm", "linux-arm64", "linux-ppc64le", "linux-mips64", "linux-mips64le", "linux-mips", "linux-mipsle", "linux-s390x", @@ -927,7 +927,7 @@ func (t *tester) internalLink() bool { if goos == "android" { return false } - if goos == "darwin" && (goarch == "arm" || goarch == "arm64") { + if t.iOS() { return false } // Internally linking cgo is incomplete on some architectures. @@ -963,7 +963,7 @@ func (t *tester) supportedBuildmode(mode string) bool { } switch pair { case "aix-ppc64", - "darwin-386", "darwin-amd64", "darwin-arm", "darwin-arm64", + "darwin-386", "darwin-amd64", "darwin-arm64", "linux-amd64", "linux-386", "linux-ppc64le", "linux-s390x", "freebsd-amd64", "windows-amd64", "windows-386": diff --git a/src/cmd/dist/util.go b/src/cmd/dist/util.go index b9e8a513d9..0a419e465f 100644 --- a/src/cmd/dist/util.go +++ b/src/cmd/dist/util.go @@ -383,8 +383,8 @@ func xsamefile(f1, f2 string) bool { } func xgetgoarm() string { - if goos == "darwin" || goos == "android" { - // Assume all darwin/arm and android devices have VFPv3. + if goos == "android" { + // Assume all android devices have VFPv3. // These ports are also mostly cross-compiled, so it makes little // sense to auto-detect the setting. return "7" diff --git a/src/cmd/doc/doc_test.go b/src/cmd/doc/doc_test.go index fd2ae30827..80b8cd4d69 100644 --- a/src/cmd/doc/doc_test.go +++ b/src/cmd/doc/doc_test.go @@ -36,8 +36,8 @@ func TestMain(m *testing.M) { } func maybeSkip(t *testing.T) { - if runtime.GOOS == "darwin" && strings.HasPrefix(runtime.GOARCH, "arm") { - t.Skip("darwin/arm does not have a full file tree") + if runtime.GOOS == "darwin" && runtime.GOARCH == "arm64" { + t.Skip("darwin/arm64 does not have a full file tree") } } diff --git a/src/cmd/go/go_test.go b/src/cmd/go/go_test.go index 33c3f48f85..723e1d9122 100644 --- a/src/cmd/go/go_test.go +++ b/src/cmd/go/go_test.go @@ -61,7 +61,7 @@ func init() { canRun = false case "darwin": switch runtime.GOARCH { - case "arm", "arm64": + case "arm64": canRun = false } case "linux": diff --git a/src/cmd/go/internal/load/pkg.go b/src/cmd/go/internal/load/pkg.go index 247f5ed506..3c018a0f7f 100644 --- a/src/cmd/go/internal/load/pkg.go +++ b/src/cmd/go/internal/load/pkg.go @@ -1940,8 +1940,7 @@ func externalLinkingForced(p *Package) bool { return true } case "darwin": - switch cfg.BuildContext.GOARCH { - case "arm", "arm64": + if cfg.BuildContext.GOARCH == "arm64" { return true } } diff --git a/src/cmd/go/internal/work/build_test.go b/src/cmd/go/internal/work/build_test.go index b60f4e27c0..c33de2635d 100644 --- a/src/cmd/go/internal/work/build_test.go +++ b/src/cmd/go/internal/work/build_test.go @@ -222,7 +222,7 @@ func pkgImportPath(pkgpath string) *load.Package { func TestRespectSetgidDir(t *testing.T) { switch runtime.GOOS { case "darwin": - if runtime.GOARCH == "arm" || runtime.GOARCH == "arm64" { + if runtime.GOARCH == "arm64" { t.Skip("can't set SetGID bit with chmod on iOS") } case "windows", "plan9": diff --git a/src/cmd/go/internal/work/init.go b/src/cmd/go/internal/work/init.go index a574924c5b..473bd1a31b 100644 --- a/src/cmd/go/internal/work/init.go +++ b/src/cmd/go/internal/work/init.go @@ -117,7 +117,7 @@ func buildModeInit() { switch cfg.Goos { case "darwin": switch cfg.Goarch { - case "arm", "arm64": + case "arm64": codegenArg = "-shared" } @@ -151,7 +151,7 @@ func buildModeInit() { ldBuildmode = "pie" case "darwin": switch cfg.Goarch { - case "arm", "arm64": + case "arm64": codegenArg = "-shared" } fallthrough diff --git a/src/cmd/internal/sys/supported.go b/src/cmd/internal/sys/supported.go index 639827be86..efc07af56b 100644 --- a/src/cmd/internal/sys/supported.go +++ b/src/cmd/internal/sys/supported.go @@ -39,7 +39,7 @@ func MustLinkExternal(goos, goarch string) bool { return true } case "darwin": - if goarch == "arm" || goarch == "arm64" { + if goarch == "arm64" { return true } } diff --git a/src/cmd/link/internal/arm/asm.go b/src/cmd/link/internal/arm/asm.go index 43ee4bf200..8472cb8660 100644 --- a/src/cmd/link/internal/arm/asm.go +++ b/src/cmd/link/internal/arm/asm.go @@ -789,11 +789,6 @@ func asmb(ctxt *ld.Link) { } func asmb2(ctxt *ld.Link) { - machlink := uint32(0) - if ctxt.HeadType == objabi.Hdarwin { - machlink = uint32(ld.Domacholink(ctxt)) - } - /* output symbol table */ ld.Symsize = 0 @@ -811,9 +806,6 @@ func asmb2(ctxt *ld.Link) { case objabi.Hplan9: symo = uint32(ld.Segdata.Fileoff + ld.Segdata.Filelen) - case objabi.Hdarwin: - symo = uint32(ld.Segdwarf.Fileoff + uint64(ld.Rnd(int64(ld.Segdwarf.Filelen), int64(*ld.FlagRound))) + uint64(machlink)) - case objabi.Hwindows: symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen) symo = uint32(ld.Rnd(int64(symo), ld.PEFILEALIGN)) @@ -845,11 +837,6 @@ func asmb2(ctxt *ld.Link) { case objabi.Hwindows: // Do nothing - - case objabi.Hdarwin: - if ctxt.LinkMode == ld.LinkExternal { - ld.Machoemitreloc(ctxt) - } } } @@ -872,9 +859,6 @@ func asmb2(ctxt *ld.Link) { objabi.Hopenbsd: ld.Asmbelf(ctxt, int64(symo)) - case objabi.Hdarwin: - ld.Asmbmacho(ctxt) - case objabi.Hwindows: ld.Asmbpe(ctxt) } diff --git a/src/cmd/link/internal/arm/obj.go b/src/cmd/link/internal/arm/obj.go index 27246df21f..003c80a508 100644 --- a/src/cmd/link/internal/arm/obj.go +++ b/src/cmd/link/internal/arm/obj.go @@ -100,15 +100,6 @@ func archinit(ctxt *ld.Link) { *ld.FlagRound = 0x10000 } - case objabi.Hdarwin: /* apple MACH */ - ld.HEADR = ld.INITIAL_MACHO_HEADR - if *ld.FlagTextAddr == -1 { - *ld.FlagTextAddr = 4096 + int64(ld.HEADR) - } - if *ld.FlagRound == -1 { - *ld.FlagRound = 4096 - } - case objabi.Hwindows: /* PE executable */ // ld.HEADR, ld.FlagTextAddr, ld.FlagRound are set in ld.Peinit return diff --git a/src/cmd/link/internal/ld/sym.go b/src/cmd/link/internal/ld/sym.go index 97966ed7e4..2284963f59 100644 --- a/src/cmd/link/internal/ld/sym.go +++ b/src/cmd/link/internal/ld/sym.go @@ -106,9 +106,6 @@ func (ctxt *Link) computeTLSOffset() { case sys.AMD64: ctxt.Tlsoffset = 0x30 - case sys.ARM: - ctxt.Tlsoffset = 0 // dummy value, not needed - case sys.ARM64: ctxt.Tlsoffset = 0 // dummy value, not needed } diff --git a/src/cmd/oldlink/internal/arm/asm.go b/src/cmd/oldlink/internal/arm/asm.go index 8db0bc3c9a..a2a0879c5b 100644 --- a/src/cmd/oldlink/internal/arm/asm.go +++ b/src/cmd/oldlink/internal/arm/asm.go @@ -618,15 +618,6 @@ func archreloc(ctxt *ld.Link, r *sym.Reloc, s *sym.Symbol, val int64) (int64, bo } r.Xsym = rs - // ld64 for arm seems to want the symbol table to contain offset - // into the section rather than pseudo virtual address that contains - // the section load address. - // we need to compensate that by removing the instruction's address - // from addend. - if ctxt.HeadType == objabi.Hdarwin { - r.Xadd -= ld.Symaddr(s) + int64(r.Off) - } - if r.Xadd/4 > 0x7fffff || r.Xadd/4 < -0x800000 { ld.Errorf(s, "direct call too far %d", r.Xadd/4) } @@ -789,11 +780,6 @@ func asmb(ctxt *ld.Link) { } func asmb2(ctxt *ld.Link) { - machlink := uint32(0) - if ctxt.HeadType == objabi.Hdarwin { - machlink = uint32(ld.Domacholink(ctxt)) - } - /* output symbol table */ ld.Symsize = 0 @@ -811,9 +797,6 @@ func asmb2(ctxt *ld.Link) { case objabi.Hplan9: symo = uint32(ld.Segdata.Fileoff + ld.Segdata.Filelen) - case objabi.Hdarwin: - symo = uint32(ld.Segdwarf.Fileoff + uint64(ld.Rnd(int64(ld.Segdwarf.Filelen), int64(*ld.FlagRound))) + uint64(machlink)) - case objabi.Hwindows: symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen) symo = uint32(ld.Rnd(int64(symo), ld.PEFILEALIGN)) @@ -845,11 +828,6 @@ func asmb2(ctxt *ld.Link) { case objabi.Hwindows: // Do nothing - - case objabi.Hdarwin: - if ctxt.LinkMode == ld.LinkExternal { - ld.Machoemitreloc(ctxt) - } } } @@ -872,9 +850,6 @@ func asmb2(ctxt *ld.Link) { objabi.Hopenbsd: ld.Asmbelf(ctxt, int64(symo)) - case objabi.Hdarwin: - ld.Asmbmacho(ctxt) - case objabi.Hwindows: ld.Asmbpe(ctxt) } diff --git a/src/cmd/oldlink/internal/arm/obj.go b/src/cmd/oldlink/internal/arm/obj.go index 1fe4b9c2c8..c423937355 100644 --- a/src/cmd/oldlink/internal/arm/obj.go +++ b/src/cmd/oldlink/internal/arm/obj.go @@ -100,15 +100,6 @@ func archinit(ctxt *ld.Link) { *ld.FlagRound = 0x10000 } - case objabi.Hdarwin: /* apple MACH */ - ld.HEADR = ld.INITIAL_MACHO_HEADR - if *ld.FlagTextAddr == -1 { - *ld.FlagTextAddr = 4096 + int64(ld.HEADR) - } - if *ld.FlagRound == -1 { - *ld.FlagRound = 4096 - } - case objabi.Hwindows: /* PE executable */ // ld.HEADR, ld.FlagTextAddr, ld.FlagRound are set in ld.Peinit return diff --git a/src/cmd/oldlink/internal/ld/sym.go b/src/cmd/oldlink/internal/ld/sym.go index c0f725c125..a470ddbca8 100644 --- a/src/cmd/oldlink/internal/ld/sym.go +++ b/src/cmd/oldlink/internal/ld/sym.go @@ -104,9 +104,6 @@ func (ctxt *Link) computeTLSOffset() { case sys.AMD64: ctxt.Tlsoffset = 0x30 - case sys.ARM: - ctxt.Tlsoffset = 0 // dummy value, not needed - case sys.ARM64: ctxt.Tlsoffset = 0 // dummy value, not needed } diff --git a/src/crypto/x509/root_darwin_test.go b/src/crypto/x509/root_darwin_test.go index 0a1529e833..bd14d34b90 100644 --- a/src/crypto/x509/root_darwin_test.go +++ b/src/crypto/x509/root_darwin_test.go @@ -16,7 +16,7 @@ import ( func TestSystemRoots(t *testing.T) { switch runtime.GOARCH { - case "arm", "arm64": + case "arm64": t.Skipf("skipping on %s/%s, no system root", runtime.GOOS, runtime.GOARCH) } diff --git a/src/go/build/build_test.go b/src/go/build/build_test.go index 05ddb49920..7151ba1180 100644 --- a/src/go/build/build_test.go +++ b/src/go/build/build_test.go @@ -111,11 +111,8 @@ func TestMultiplePackageImport(t *testing.T) { } func TestLocalDirectory(t *testing.T) { - if runtime.GOOS == "darwin" { - switch runtime.GOARCH { - case "arm", "arm64": - t.Skipf("skipping on %s/%s, no valid GOROOT", runtime.GOOS, runtime.GOARCH) - } + if runtime.GOOS == "darwin" && runtime.GOARCH == "arm64" { + t.Skipf("skipping on %s/%s, no valid GOROOT", runtime.GOOS, runtime.GOARCH) } cwd, err := os.Getwd() @@ -244,11 +241,8 @@ func TestMatchFile(t *testing.T) { } func TestImportCmd(t *testing.T) { - if runtime.GOOS == "darwin" { - switch runtime.GOARCH { - case "arm", "arm64": - t.Skipf("skipping on %s/%s, no valid GOROOT", runtime.GOOS, runtime.GOARCH) - } + if runtime.GOOS == "darwin" && runtime.GOARCH == "arm64" { + t.Skipf("skipping on %s/%s, no valid GOROOT", runtime.GOOS, runtime.GOARCH) } p, err := Import("cmd/internal/objfile", "", 0) diff --git a/src/go/build/deps_test.go b/src/go/build/deps_test.go index 91ecae836a..6585855bb4 100644 --- a/src/go/build/deps_test.go +++ b/src/go/build/deps_test.go @@ -517,7 +517,7 @@ func listStdPkgs(goroot string) ([]string, error) { } func TestDependencies(t *testing.T) { - iOS := runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") + iOS := runtime.GOOS == "darwin" && runtime.GOARCH == "arm64" if iOS { // Tests run in a limited file system and we do not // provide access to every source file. diff --git a/src/go/internal/gcimporter/gcimporter_test.go b/src/go/internal/gcimporter/gcimporter_test.go index 0ccf60aadd..663753a18a 100644 --- a/src/go/internal/gcimporter/gcimporter_test.go +++ b/src/go/internal/gcimporter/gcimporter_test.go @@ -26,8 +26,7 @@ import ( // import. func skipSpecialPlatforms(t *testing.T) { switch platform := runtime.GOOS + "-" + runtime.GOARCH; platform { - case "darwin-arm", - "darwin-arm64": + case "darwin-arm64": t.Skipf("no compiled packages available for import on %s", platform) } } diff --git a/src/internal/testenv/testenv.go b/src/internal/testenv/testenv.go index b036aa6ebc..309b2702ed 100644 --- a/src/internal/testenv/testenv.go +++ b/src/internal/testenv/testenv.go @@ -46,7 +46,7 @@ func HasGoBuild() bool { case "android", "js": return false case "darwin": - if strings.HasPrefix(runtime.GOARCH, "arm") { + if runtime.GOARCH == "arm64" { return false } } @@ -125,7 +125,7 @@ func HasExec() bool { case "js": return false case "darwin": - if strings.HasPrefix(runtime.GOARCH, "arm") { + if runtime.GOARCH == "arm64" { return false } } @@ -136,7 +136,7 @@ func HasExec() bool { func HasSrc() bool { switch runtime.GOOS { case "darwin": - if strings.HasPrefix(runtime.GOARCH, "arm") { + if runtime.GOARCH == "arm64" { return false } } diff --git a/src/iostest.bash b/src/iostest.bash index 1fc1666bae..5fa6744979 100755 --- a/src/iostest.bash +++ b/src/iostest.bash @@ -3,7 +3,7 @@ # Use of this source code is governed by a BSD-style # license that can be found in the LICENSE file. -# For testing darwin/arm{,64} on iOS. +# For testing darwin/arm64 on iOS. set -e ulimit -c 0 # no core files @@ -20,13 +20,10 @@ if [ "$GOOS" != "darwin" ]; then echo "iostest.bash requires GOOS=darwin, got GOOS=$GOOS" 1>&2 exit 1 fi -if [ "$GOARCH" != "arm" ] && [ "$GOARCH" != "arm64" ]; then - echo "iostest.bash requires GOARCH=arm or GOARCH=arm64, got GOARCH=$GOARCH" 1>&2 +if [ "$GOARCH" != "arm64" ]; then + echo "iostest.bash requires GOARCH=arm64, got GOARCH=$GOARCH" 1>&2 exit 1 fi -if [ "$GOARCH" = "arm" ]; then - export GOARM=7 -fi if [ "$1" = "-restart" ]; then # Reboot to make sure previous runs do not interfere with the current run. diff --git a/src/log/syslog/syslog_test.go b/src/log/syslog/syslog_test.go index b2cf8df4b9..f778e965f3 100644 --- a/src/log/syslog/syslog_test.go +++ b/src/log/syslog/syslog_test.go @@ -53,7 +53,7 @@ func testableNetwork(network string) bool { switch runtime.GOOS { case "darwin": switch runtime.GOARCH { - case "arm", "arm64": + case "arm64": return false } case "android": diff --git a/src/net/dial_test.go b/src/net/dial_test.go index 78feaae7f4..aedf643e98 100644 --- a/src/net/dial_test.go +++ b/src/net/dial_test.go @@ -991,7 +991,7 @@ func TestDialerControl(t *testing.T) { // except that it won't skip testing on non-mobile builders. func mustHaveExternalNetwork(t *testing.T) { t.Helper() - mobile := runtime.GOOS == "android" || runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") + mobile := runtime.GOOS == "android" || runtime.GOOS == "darwin" && runtime.GOARCH == "arm64" if testenv.Builder() == "" || mobile { testenv.MustHaveExternalNetwork(t) } diff --git a/src/net/lookup_test.go b/src/net/lookup_test.go index 2bc5592d5a..4956037f4b 100644 --- a/src/net/lookup_test.go +++ b/src/net/lookup_test.go @@ -74,7 +74,7 @@ func TestLookupGoogleSRV(t *testing.T) { t.Parallel() mustHaveExternalNetwork(t) - if runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") { + if iOS() { t.Skip("no resolv.conf on iOS") } @@ -123,7 +123,7 @@ func TestLookupGmailMX(t *testing.T) { t.Parallel() mustHaveExternalNetwork(t) - if runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") { + if iOS() { t.Skip("no resolv.conf on iOS") } @@ -169,7 +169,7 @@ func TestLookupGmailNS(t *testing.T) { t.Parallel() mustHaveExternalNetwork(t) - if runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") { + if iOS() { t.Skip("no resolv.conf on iOS") } @@ -218,7 +218,7 @@ func TestLookupGmailTXT(t *testing.T) { t.Parallel() mustHaveExternalNetwork(t) - if runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") { + if iOS() { t.Skip("no resolv.conf on iOS") } @@ -637,7 +637,7 @@ func TestLookupDotsWithRemoteSource(t *testing.T) { t.Skip("IPv4 is required") } - if runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") { + if iOS() { t.Skip("no resolv.conf on iOS") } diff --git a/src/net/platform_test.go b/src/net/platform_test.go index d35dfaade3..d3bb918edb 100644 --- a/src/net/platform_test.go +++ b/src/net/platform_test.go @@ -54,7 +54,7 @@ func testableNetwork(network string) bool { return unixEnabledOnAIX } // iOS does not support unix, unixgram. - if runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") { + if iOS() { return false } case "unixpacket": @@ -81,6 +81,10 @@ func testableNetwork(network string) bool { return true } +func iOS() bool { + return runtime.GOOS == "darwin" && runtime.GOARCH == "arm64" +} + // testableAddress reports whether address of network is testable on // the current platform configuration. func testableAddress(network, address string) bool { diff --git a/src/net/timeout_test.go b/src/net/timeout_test.go index f54c9564f9..51123dfbc4 100644 --- a/src/net/timeout_test.go +++ b/src/net/timeout_test.go @@ -745,7 +745,7 @@ func TestWriteTimeoutFluctuation(t *testing.T) { defer c.Close() d := time.Second - if runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") { + if iOS() { d = 3 * time.Second // see golang.org/issue/10775 } max := time.NewTimer(d) diff --git a/src/os/file.go b/src/os/file.go index 9f8c82718b..94341f90e2 100644 --- a/src/os/file.go +++ b/src/os/file.go @@ -482,7 +482,7 @@ func UserHomeDir() (string, error) { case "android": return "/sdcard", nil case "darwin": - if runtime.GOARCH == "arm" || runtime.GOARCH == "arm64" { + if runtime.GOARCH == "arm64" { return "/", nil } } diff --git a/src/os/os_test.go b/src/os/os_test.go index 44e1434dbe..978e99110c 100644 --- a/src/os/os_test.go +++ b/src/os/os_test.go @@ -54,7 +54,7 @@ var sysdir = func() *sysDir { } case "darwin": switch runtime.GOARCH { - case "arm", "arm64": + case "arm64": wd, err := syscall.Getwd() if err != nil { wd = err.Error() @@ -146,7 +146,7 @@ func localTmp() string { return TempDir() case "darwin": switch runtime.GOARCH { - case "arm", "arm64": + case "arm64": return TempDir() } } @@ -483,7 +483,7 @@ func TestReaddirnamesOneAtATime(t *testing.T) { dir = "/system/bin" case "darwin": switch runtime.GOARCH { - case "arm", "arm64": + case "arm64": wd, err := Getwd() if err != nil { t.Fatal(err) @@ -1297,7 +1297,7 @@ func TestChdirAndGetwd(t *testing.T) { dirs = []string{"/", "/usr"} case "darwin": switch runtime.GOARCH { - case "arm", "arm64": + case "arm64": dirs = nil for _, d := range []string{"d1", "d2"} { dir, err := ioutil.TempDir("", d) diff --git a/src/os/path_test.go b/src/os/path_test.go index 6cb25bcaa7..d586daf936 100644 --- a/src/os/path_test.go +++ b/src/os/path_test.go @@ -109,8 +109,8 @@ func TestMkdirAllAtSlash(t *testing.T) { t.Skipf("skipping on %s", runtime.GOOS) case "darwin": switch runtime.GOARCH { - case "arm", "arm64": - t.Skipf("skipping on darwin/%s, mkdir returns EPERM", runtime.GOARCH) + case "arm64": + t.Skipf("skipping on darwin/arm64, mkdir returns EPERM") } } RemoveAll("/_go_os_test") diff --git a/src/os/wait_waitid.go b/src/os/wait_waitid.go index 946c085a50..c57bace90f 100644 --- a/src/os/wait_waitid.go +++ b/src/os/wait_waitid.go @@ -24,7 +24,7 @@ func (p *Process) blockUntilWaitable() (bool, error) { // The waitid system call expects a pointer to a siginfo_t, // which is 128 bytes on all GNU/Linux systems. // On Darwin, it requires greater than or equal to 64 bytes - // for darwin/{386,arm} and 104 bytes for darwin/amd64. + // for darwin/386 and 104 bytes for darwin/amd64. // We don't care about the values it returns. var siginfo [16]uint64 psig := &siginfo[0] diff --git a/src/path/filepath/path_test.go b/src/path/filepath/path_test.go index 2d13149f3f..d6f680556c 100644 --- a/src/path/filepath/path_test.go +++ b/src/path/filepath/path_test.go @@ -431,12 +431,9 @@ func chtmpdir(t *testing.T) (restore func()) { } func TestWalk(t *testing.T) { - if runtime.GOOS == "darwin" { - switch runtime.GOARCH { - case "arm", "arm64": - restore := chtmpdir(t) - defer restore() - } + if runtime.GOOS == "darwin" && runtime.GOARCH == "arm64" { + restore := chtmpdir(t) + defer restore() } tmpDir, err := ioutil.TempDir("", "TestWalk") @@ -1281,11 +1278,8 @@ func TestDriveLetterInEvalSymlinks(t *testing.T) { } func TestBug3486(t *testing.T) { // https://golang.org/issue/3486 - if runtime.GOOS == "darwin" { - switch runtime.GOARCH { - case "arm", "arm64": - t.Skipf("skipping on %s/%s", runtime.GOOS, runtime.GOARCH) - } + if runtime.GOOS == "darwin" && runtime.GOARCH == "arm64" { + t.Skipf("skipping on %s/%s", runtime.GOOS, runtime.GOARCH) } root, err := filepath.EvalSymlinks(runtime.GOROOT() + "/test") if err != nil { diff --git a/src/runtime/cgo/cgo.go b/src/runtime/cgo/cgo.go index 5b3c701309..c02b837978 100644 --- a/src/runtime/cgo/cgo.go +++ b/src/runtime/cgo/cgo.go @@ -11,8 +11,7 @@ package cgo /* -#cgo darwin,!arm,!arm64 LDFLAGS: -lpthread -#cgo darwin,arm LDFLAGS: -framework CoreFoundation +#cgo darwin,!arm64 LDFLAGS: -lpthread #cgo darwin,arm64 LDFLAGS: -framework CoreFoundation #cgo dragonfly LDFLAGS: -lpthread #cgo freebsd LDFLAGS: -lpthread diff --git a/src/runtime/cgo/gcc_darwin_arm64.c b/src/runtime/cgo/gcc_darwin_arm64.c index e6e305789f..fd7d4084c9 100644 --- a/src/runtime/cgo/gcc_darwin_arm64.c +++ b/src/runtime/cgo/gcc_darwin_arm64.c @@ -94,7 +94,7 @@ threadentry(void *v) } // init_working_dir sets the current working directory to the app root. -// By default darwin/arm processes start in "/". +// By default darwin/arm64 processes start in "/". static void init_working_dir() { diff --git a/src/runtime/os_darwin.go b/src/runtime/os_darwin.go index c11fbec0a5..01c40b4813 100644 --- a/src/runtime/os_darwin.go +++ b/src/runtime/os_darwin.go @@ -289,9 +289,9 @@ func mpreinit(mp *m) { // Called to initialize a new m (including the bootstrap m). // Called on the new thread, cannot allocate memory. func minit() { - // The alternate signal stack is buggy on arm and arm64. + // The alternate signal stack is buggy on arm64. // The signal handler handles it directly. - if GOARCH != "arm" && GOARCH != "arm64" { + if GOARCH != "arm64" { minitSignalStack() } minitSignalMask() @@ -301,9 +301,9 @@ func minit() { // Called from dropm to undo the effect of an minit. //go:nosplit func unminit() { - // The alternate signal stack is buggy on arm and arm64. + // The alternate signal stack is buggy on arm64. // See minit. - if GOARCH != "arm" && GOARCH != "arm64" { + if GOARCH != "arm64" { unminitSignals() } } diff --git a/src/runtime/pprof/pprof_test.go b/src/runtime/pprof/pprof_test.go index 83b3152d68..e78f1a4938 100644 --- a/src/runtime/pprof/pprof_test.go +++ b/src/runtime/pprof/pprof_test.go @@ -226,7 +226,7 @@ func testCPUProfile(t *testing.T, matches matchFunc, need []string, avoid []stri switch runtime.GOOS { case "darwin": switch runtime.GOARCH { - case "arm", "arm64": + case "arm64": // nothing default: out, err := exec.Command("uname", "-a").CombinedOutput() diff --git a/src/runtime/signal_arm.go b/src/runtime/signal_arm.go index 1663d913c3..e1d19244a9 100644 --- a/src/runtime/signal_arm.go +++ b/src/runtime/signal_arm.go @@ -63,9 +63,7 @@ func (c *sigctxt) preparePanic(sig uint32, gp *g) { c.set_pc(uint32(funcPC(sigpanic))) } -// TODO(issue 35439): enabling async preemption causes failures on darwin/arm. -// Disable for now. -const pushCallSupported = GOOS != "darwin" +const pushCallSupported = true func (c *sigctxt) pushCall(targetPC uintptr) { // Push the LR to stack, as we'll clobber it in order to diff --git a/src/runtime/signal_unix.go b/src/runtime/signal_unix.go index b8f27d1147..5dbfbaf4b1 100644 --- a/src/runtime/signal_unix.go +++ b/src/runtime/signal_unix.go @@ -350,8 +350,8 @@ func preemptM(mp *m) { // yet, so doSigPreempt won't work. return } - if GOOS == "darwin" && (GOARCH == "arm" || GOARCH == "arm64") && !iscgo { - // On darwin, we use libc calls, and cgo is required on ARM and ARM64 + if GOOS == "darwin" && GOARCH == "arm64" && !iscgo { + // On darwin, we use libc calls, and cgo is required on ARM64 // so we have TLS set up to save/restore G during C calls. If cgo is // absent, we cannot save/restore G in TLS, and if a signal is // received during C execution we cannot get the G. Therefore don't @@ -1191,7 +1191,7 @@ func signalstack(s *stack) { sigaltstack(&st, nil) } -// setsigsegv is used on darwin/arm{,64} to fake a segmentation fault. +// setsigsegv is used on darwin/arm64 to fake a segmentation fault. // // This is exported via linkname to assembly in runtime/cgo. // diff --git a/src/runtime/tls_arm.s b/src/runtime/tls_arm.s index bed7891368..e42de8deb4 100644 --- a/src/runtime/tls_arm.s +++ b/src/runtime/tls_arm.s @@ -17,14 +17,11 @@ // Note: both functions will clobber R0 and R11 and // can be called from 5c ABI code. -// On android and darwin, runtime.tls_g is a normal variable. +// On android, runtime.tls_g is a normal variable. // TLS offset is computed in x_cgo_inittls. #ifdef GOOS_android #define TLSG_IS_VARIABLE #endif -#ifdef GOOS_darwin -#define TLSG_IS_VARIABLE -#endif // save_g saves the g register into pthread-provided // thread-local memory, so that we can call externally compiled diff --git a/src/runtime/vlrt.go b/src/runtime/vlrt.go index f790d3b17f..e4d1be5d8a 100644 --- a/src/runtime/vlrt.go +++ b/src/runtime/vlrt.go @@ -132,7 +132,7 @@ func uint64mod(n, d uint64) uint64 { //go:nosplit // nosplit because division is used in syscall context in nanotime on darwin/386 -// and darwin/arm where stack splits are not allowed. +// where stack splits are not allowed. func int64div(n, d int64) int64 { // Check for 32 bit operands if int64(int32(n)) == n && int64(int32(d)) == d { diff --git a/src/syscall/mkall.sh b/src/syscall/mkall.sh index aa6706c82e..7e624c5a21 100755 --- a/src/syscall/mkall.sh +++ b/src/syscall/mkall.sh @@ -142,13 +142,6 @@ darwin_arm64) mktypes="GOARCH=$GOARCH go tool cgo -godefs" mkasm="go run mkasm_darwin.go" ;; -darwin_arm) - mkerrors="$mkerrors -m32" - mksyscall="./mksyscall.pl -l32 -darwin" - mksysnum="./mksysnum_darwin.pl /usr/include/sys/syscall.h" - mktypes="GOARCH=$GOARCH go tool cgo -godefs" - mkasm="go run mkasm_darwin.go" - ;; dragonfly_amd64) mkerrors="$mkerrors -m64" mksyscall="./mksyscall.pl -dragonfly" diff --git a/src/syscall/syscall_unix_test.go b/src/syscall/syscall_unix_test.go index ff47a0c81a..13b79ca8d8 100644 --- a/src/syscall/syscall_unix_test.go +++ b/src/syscall/syscall_unix_test.go @@ -70,7 +70,7 @@ func _() { // Thus this test also verifies that the Flock_t structure can be // roundtripped with F_SETLK and F_GETLK. func TestFcntlFlock(t *testing.T) { - if runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") { + if runtime.GOOS == "darwin" && runtime.GOARCH == "arm64" { t.Skip("skipping; no child processes allowed on iOS") } flock := syscall.Flock_t{