]> Cypherpunks repositories - gostls13.git/commitdiff
all: remove nacl (part 3, more amd64p32)
authorBrad Fitzpatrick <bradfitz@golang.org>
Thu, 10 Oct 2019 16:16:54 +0000 (16:16 +0000)
committerBrad Fitzpatrick <bradfitz@golang.org>
Thu, 10 Oct 2019 22:38:38 +0000 (22:38 +0000)
Part 1: CL 199499 (GOOS nacl)
Part 2: CL 200077 (amd64p32 files, toolchain)
Part 3: stuff that arguably should've been part of Part 2, but I forgot
        one of my grep patterns when splitting the original CL up into
        two parts.

This one might also have interesting stuff to resurrect for any future
x32 ABI support.

Updates #30439

Change-Id: I2b4143374a253a003666f3c69e776b7e456bdb9c
Reviewed-on: https://go-review.googlesource.com/c/go/+/200318
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
47 files changed:
src/cmd/asm/internal/arch/arch.go
src/cmd/compile/internal/amd64/galign.go
src/cmd/compile/internal/ssa/config.go
src/cmd/compile/internal/ssa/rewrite.go
src/cmd/compile/main.go
src/cmd/dist/build.go
src/cmd/go/internal/imports/build.go
src/cmd/go/internal/work/exec.go
src/cmd/internal/obj/x86/obj6.go
src/cmd/internal/objfile/disasm.go
src/cmd/internal/sys/arch.go
src/cmd/link/internal/amd64/obj.go
src/cmd/link/main.go
src/crypto/md5/md5block_decl.go
src/crypto/md5/md5block_generic.go
src/crypto/sha1/sha1block_decl.go
src/crypto/sha1/sha1block_generic.go
src/go/build/syslist.go
src/hash/crc32/crc32_otherarch.go
src/internal/bytealg/compare_generic.go
src/internal/bytealg/compare_native.go
src/internal/bytealg/indexbyte_generic.go
src/internal/bytealg/indexbyte_native.go
src/internal/cpu/cpu_no_init.go
src/internal/cpu/cpu_x86.go
src/internal/cpu/cpu_x86.s
src/internal/cpu/cpu_x86_test.go
src/math/exp_asm.go
src/reflect/all_test.go
src/reflect/type.go
src/reflect/value.go
src/runtime/asm.s
src/runtime/gcinfo_test.go
src/runtime/go_tls.h
src/runtime/hash64.go
src/runtime/internal/atomic/atomic_amd64.go [moved from src/runtime/internal/atomic/atomic_amd64x.go with 98% similarity]
src/runtime/internal/atomic/atomic_test.go
src/runtime/panic32.go
src/runtime/runtime2.go
src/runtime/signal_amd64.go [moved from src/runtime/signal_amd64x.go with 98% similarity]
src/runtime/stubs32.go
src/runtime/stubs_amd64.go [moved from src/runtime/stubs_amd64x.go with 93% similarity]
src/runtime/sys_x86.go
src/runtime/trace.go
src/runtime/traceback.go
src/sync/atomic/atomic_test.go
src/syscall/endian_little.go

index 5d1f9a532660cb6348c4b729b538919541e03d8b..f090d12bed43324321fc83a7a730233fa17f60ee 100644 (file)
@@ -56,8 +56,6 @@ func Set(GOARCH string) *Arch {
                return archX86(&x86.Link386)
        case "amd64":
                return archX86(&x86.Linkamd64)
-       case "amd64p32":
-               return archX86(&x86.Linkamd64p32)
        case "arm":
                return archArm()
        case "arm64":
index f6bb961c29e0e1628f63689954d57332f55c0557..4e7e762d7d1d1d1719a23d28207d189ac9b4a2ae 100644 (file)
@@ -7,17 +7,12 @@ package amd64
 import (
        "cmd/compile/internal/gc"
        "cmd/internal/obj/x86"
-       "cmd/internal/objabi"
 )
 
 var leaptr = x86.ALEAQ
 
 func Init(arch *gc.Arch) {
        arch.LinkArch = &x86.Linkamd64
-       if objabi.GOARCH == "amd64p32" {
-               arch.LinkArch = &x86.Linkamd64p32
-               leaptr = x86.ALEAL
-       }
        arch.REGSP = x86.REGSP
        arch.MAXWIDTH = 1 << 50
 
index 770f92cc8e83c7e260bafcfc0ccc77058a2a1136..4041a480b3142f3548abc248d8ec01209eef227a 100644 (file)
@@ -210,19 +210,6 @@ func NewConfig(arch string, types Types, ctxt *obj.Link, optimize bool) *Config
                c.FPReg = framepointerRegAMD64
                c.LinkReg = linkRegAMD64
                c.hasGReg = false
-       case "amd64p32":
-               c.PtrSize = 4
-               c.RegSize = 8
-               c.lowerBlock = rewriteBlockAMD64
-               c.lowerValue = rewriteValueAMD64
-               c.splitLoad = rewriteValueAMD64splitload
-               c.registers = registersAMD64[:]
-               c.gpRegMask = gpRegMaskAMD64
-               c.fpRegMask = fpRegMaskAMD64
-               c.FPReg = framepointerRegAMD64
-               c.LinkReg = linkRegAMD64
-               c.hasGReg = false
-               c.noDuffDevice = true
        case "386":
                c.PtrSize = 4
                c.RegSize = 4
index 9e8cda978eafc0a0e8b480159940da99047c3763..539941001dd591cc95d3b5f43327d9ca9c15693a 100644 (file)
@@ -1061,7 +1061,7 @@ func isInlinableMemmove(dst, src *Value, sz int64, c *Config) bool {
        // lowers them, so we only perform this optimization on platforms that we know to
        // have fast Move ops.
        switch c.arch {
-       case "amd64", "amd64p32":
+       case "amd64":
                return sz <= 16 || (sz < 1024 && disjoint(dst, sz, src, sz))
        case "386", "ppc64", "ppc64le", "arm64":
                return sz <= 8
@@ -1077,7 +1077,7 @@ func isInlinableMemmove(dst, src *Value, sz int64, c *Config) bool {
 // for sizes < 32-bit.  This is used to decide whether to promote some rotations.
 func hasSmallRotate(c *Config) bool {
        switch c.arch {
-       case "amd64", "amd64p32", "386":
+       case "amd64", "386":
                return true
        default:
                return false
index bf4289e8f1c639256a6efc3cb16b8e0b821aab08..e3ec3361f9e79ece4bc1840057d4c1f2d7a5481b 100644 (file)
@@ -24,7 +24,6 @@ import (
 var archInits = map[string]func(*gc.Arch){
        "386":      x86.Init,
        "amd64":    amd64.Init,
-       "amd64p32": amd64.Init,
        "arm":      arm.Init,
        "arm64":    arm64.Init,
        "mips":     mips.Init,
index 8f2f57dc22f70fc7dc77758c2167b2c61bd8b815..ea290b106908a065b622797bac0fd18e99da80aa 100644 (file)
@@ -61,7 +61,6 @@ var (
 var okgoarch = []string{
        "386",
        "amd64",
-       "amd64p32",
        "arm",
        "arm64",
        "mips",
@@ -86,6 +85,7 @@ var okgoos = []string{
        "android",
        "solaris",
        "freebsd",
+       "nacl", // keep;
        "netbsd",
        "openbsd",
        "plan9",
index 3e9fe357e0792b7dc03ded1a6d93265d80b4c5cb..eb070eef4c1bede105ba2f45675b259afe681840 100644 (file)
@@ -210,7 +210,7 @@ var KnownOS = map[string]bool{
        "illumos":   true,
        "js":        true,
        "linux":     true,
-       "nacl":      true,
+       "nacl":      true, // legacy; don't remove
        "netbsd":    true,
        "openbsd":   true,
        "plan9":     true,
@@ -222,7 +222,7 @@ var KnownOS = map[string]bool{
 var KnownArch = map[string]bool{
        "386":         true,
        "amd64":       true,
-       "amd64p32":    true,
+       "amd64p32":    true, // legacy; don't remove
        "arm":         true,
        "armbe":       true,
        "arm64":       true,
index 68ab85ae075db98e61af680449889305836dabd3..71eb5d9cd3fb7218bbf089b99916a65d63896e38 100644 (file)
@@ -2390,7 +2390,7 @@ func (b *Builder) gccArchArgs() []string {
        switch cfg.Goarch {
        case "386":
                return []string{"-m32"}
-       case "amd64", "amd64p32":
+       case "amd64":
                return []string{"-m64"}
        case "arm":
                return []string{"-marm"} // not thumb
index 6716372460d3d12ac5d6cb7a85f6df43334ba3c6..4554d4a525fb83049170dd2f9686943b56907732 100644 (file)
@@ -1226,16 +1226,6 @@ var Linkamd64 = obj.LinkArch{
        DWARFRegisters: AMD64DWARFRegisters,
 }
 
-var Linkamd64p32 = obj.LinkArch{
-       Arch:           sys.ArchAMD64P32,
-       Init:           instinit,
-       Preprocess:     preprocess,
-       Assemble:       span6,
-       Progedit:       progedit,
-       UnaryDst:       unaryDst,
-       DWARFRegisters: AMD64DWARFRegisters,
-}
-
 var Link386 = obj.LinkArch{
        Arch:           sys.Arch386,
        Init:           instinit,
index 50fc51be8772665f0a8918b178374c585df528ea..b979a7f8aa0df2dd1cb5d3ea6cfa933e58aa06b0 100644 (file)
@@ -241,7 +241,7 @@ func (d *Disasm) Print(w io.Writer, filter *regexp.Regexp, start, end uint64, pr
                                fmt.Fprintf(tw, "  %s:%d\t%#x\t", base(file), line, pc)
                        }
 
-                       if size%4 != 0 || d.goarch == "386" || d.goarch == "amd64" || d.goarch == "amd64p32" {
+                       if size%4 != 0 || d.goarch == "386" || d.goarch == "amd64" {
                                // Print instruction as bytes.
                                fmt.Fprintf(tw, "%x", code[i:i+size])
                        } else {
@@ -367,24 +367,22 @@ func disasm_ppc64(code []byte, pc uint64, lookup lookupFunc, byteOrder binary.By
 }
 
 var disasms = map[string]disasmFunc{
-       "386":      disasm_386,
-       "amd64":    disasm_amd64,
-       "amd64p32": disasm_amd64,
-       "arm":      disasm_arm,
-       "arm64":    disasm_arm64,
-       "ppc64":    disasm_ppc64,
-       "ppc64le":  disasm_ppc64,
+       "386":     disasm_386,
+       "amd64":   disasm_amd64,
+       "arm":     disasm_arm,
+       "arm64":   disasm_arm64,
+       "ppc64":   disasm_ppc64,
+       "ppc64le": disasm_ppc64,
 }
 
 var byteOrders = map[string]binary.ByteOrder{
-       "386":      binary.LittleEndian,
-       "amd64":    binary.LittleEndian,
-       "amd64p32": binary.LittleEndian,
-       "arm":      binary.LittleEndian,
-       "arm64":    binary.LittleEndian,
-       "ppc64":    binary.BigEndian,
-       "ppc64le":  binary.LittleEndian,
-       "s390x":    binary.BigEndian,
+       "386":     binary.LittleEndian,
+       "amd64":   binary.LittleEndian,
+       "arm":     binary.LittleEndian,
+       "arm64":   binary.LittleEndian,
+       "ppc64":   binary.BigEndian,
+       "ppc64le": binary.LittleEndian,
+       "s390x":   binary.BigEndian,
 }
 
 type Liner interface {
index 2e07482c1a62e324f98f99f07c5e4bd7b48bcdaa..e8687363defc502c17cdb97660b7c4ac886d799d 100644 (file)
@@ -7,8 +7,7 @@ package sys
 import "encoding/binary"
 
 // ArchFamily represents a family of one or more related architectures.
-// For example, amd64 and amd64p32 are both members of the AMD64 family,
-// and ppc64 and ppc64le are both members of the PPC64 family.
+// For example, ppc64 and ppc64le are both members of the PPC64 family.
 type ArchFamily byte
 
 const (
@@ -72,15 +71,6 @@ var ArchAMD64 = &Arch{
        MinLC:     1,
 }
 
-var ArchAMD64P32 = &Arch{
-       Name:      "amd64p32",
-       Family:    AMD64,
-       ByteOrder: binary.LittleEndian,
-       PtrSize:   4,
-       RegSize:   8,
-       MinLC:     1,
-}
-
 var ArchARM = &Arch{
        Name:      "arm",
        Family:    ARM,
@@ -183,7 +173,6 @@ var ArchWasm = &Arch{
 var Archs = [...]*Arch{
        Arch386,
        ArchAMD64,
-       ArchAMD64P32,
        ArchARM,
        ArchARM64,
        ArchMIPS,
index 537a241baa026b732a0e3645905dd9ffdd6aeafa..029a24d7c1b544e39f8c82b41fdfc0075f887228 100644 (file)
@@ -38,9 +38,6 @@ import (
 
 func Init() (*sys.Arch, ld.Arch) {
        arch := sys.ArchAMD64
-       if objabi.GOARCH == "amd64p32" {
-               arch = sys.ArchAMD64P32
-       }
 
        theArch := ld.Arch{
                Funcalign:  funcAlign,
index 4b8df11451f71b834ce72336b652f839272c157e..99550b0584deadd5be0f46d1cb97a73f4d734d0c 100644 (file)
@@ -45,7 +45,7 @@ func main() {
                os.Exit(2)
        case "386":
                arch, theArch = x86.Init()
-       case "amd64", "amd64p32":
+       case "amd64":
                arch, theArch = amd64.Init()
        case "arm":
                arch, theArch = arm.Init()
index 1ac82cf08ca31434f3810580ce50754f4e77093d..f251e03d7ffbc1a8f1a8a769b9e77e7344daca9b 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build amd64 amd64p32 386 arm ppc64le ppc64 s390x arm64
+// +build amd64 386 arm ppc64le ppc64 s390x arm64
 
 package md5
 
index 86e3b64e9fbdf7fea51af5104156b061fddd415b..0b46e70b6041f390cec66a65f6fb2570ba762f01 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build !amd64,!amd64p32,!386,!arm,!ppc64le,!ppc64,!s390x,!arm64
+// +build !amd64,!386,!arm,!ppc64le,!ppc64,!s390x,!arm64
 
 package md5
 
index 6d2d073d13733157422f2e0cd2b180d6ae1c0537..9c7df4e40a7949103dea0f1c60d20eef1e209f1f 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build amd64p32 arm 386 s390x
+// +build arm 386 s390x
 
 package sha1
 
index 5823e0894104196e3a33e66b0e241ed02410818a..f95ea0eee4d6e7da41b3ddb0871e1588b46fca67 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build !amd64,!amd64p32,!386,!arm,!s390x,!arm64
+// +build !amd64,!386,!arm,!s390x,!arm64
 
 package sha1
 
index 197c646d5c0473cd93a76f9a7505c10b36108296..fbfe4c46779ae2603f8b88837507af4f0f13fae0 100644 (file)
@@ -4,5 +4,8 @@
 
 package build
 
+// List of past, present, and future known GOOS and GOARCH values.
+// Do not remove from this list, as these are used for go/build filename matching.
+
 const goosList = "aix android darwin dragonfly freebsd hurd illumos js linux nacl netbsd openbsd plan9 solaris windows zos "
 const goarchList = "386 amd64 amd64p32 arm armbe arm64 arm64be ppc64 ppc64le mips mipsle mips64 mips64le mips64p32 mips64p32le ppc riscv riscv64 s390 s390x sparc sparc64 wasm "
index 6f3510a279bf7c09d0bf3155ab8c7bb5bf418d42..1a5e542ab6dd2e02e30cb8b4625bf6f3f1af1976 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build !amd64,!amd64p32,!s390x,!ppc64le,!arm64
+// +build !amd64,!s390x,!ppc64le,!arm64
 
 package crc32
 
index 4839df9528f0828bbe93b9fddf3e5aaf1cad3d90..bd4489a6b9c13296ef07a2c1ab3156fbfd90a7af 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build !386,!amd64,!amd64p32,!s390x,!arm,!arm64,!ppc64,!ppc64le,!mips,!mipsle,!wasm,!mips64,!mips64le
+// +build !386,!amd64,!s390x,!arm,!arm64,!ppc64,!ppc64le,!mips,!mipsle,!wasm,!mips64,!mips64le
 
 package bytealg
 
index 95486e85429c1bd35cd07f2ad1774744710a3793..b53ba97463fd5dda4a3f97893b45fa4bba8f70b0 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build 386 amd64 amd64p32 s390x arm arm64 ppc64 ppc64le mips mipsle wasm mips64 mips64le
+// +build 386 amd64 s390x arm arm64 ppc64 ppc64le mips mipsle wasm mips64 mips64le
 
 package bytealg
 
index 6bff31ceee49233c2526010e74235053f7994a58..fce1b0fc542eb90a77b20afee5b49005c0a98c99 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build !386,!amd64,!amd64p32,!s390x,!arm,!arm64,!ppc64,!ppc64le,!mips,!mipsle,!mips64,!mips64le,!wasm
+// +build !386,!amd64,!s390x,!arm,!arm64,!ppc64,!ppc64le,!mips,!mipsle,!mips64,!mips64le,!wasm
 
 package bytealg
 
index b4ddc86ea90db3b0ad20fd7a70edca0e16442819..157caa34c4a4c852f6b85b2a8a846b1433671b88 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build 386 amd64 amd64p32 s390x arm arm64 ppc64 ppc64le mips mipsle mips64 mips64le wasm
+// +build 386 amd64 s390x arm arm64 ppc64 ppc64le mips mipsle mips64 mips64le wasm
 
 package bytealg
 
index 777ea9de8bdbfe92ed70d2e8004d98d77cbbc525..d4b2be8cf4f61fc37e2874bf66b07e29d1ac96d4 100644 (file)
@@ -4,7 +4,6 @@
 
 // +build !386
 // +build !amd64
-// +build !amd64p32
 // +build !arm
 // +build !arm64
 // +build !ppc64
index 5d357be62b2cc100a40a17d611a06f6f01e34c0a..da6cf67258190ddc51c02a7499a65dbfb9b2e6ba 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build 386 amd64 amd64p32
+// +build 386 amd64
 
 package cpu
 
@@ -55,8 +55,8 @@ func doinit() {
                {Name: "sse42", Feature: &X86.HasSSE42},
                {Name: "ssse3", Feature: &X86.HasSSSE3},
 
-               // These capabilities should always be enabled on amd64(p32):
-               {Name: "sse2", Feature: &X86.HasSSE2, Required: GOARCH == "amd64" || GOARCH == "amd64p32"},
+               // These capabilities should always be enabled on amd64:
+               {Name: "sse2", Feature: &X86.HasSSE2, Required: GOARCH == "amd64"},
        }
 
        maxID, _, _, _ := cpuid(0, 0)
index 564e1133ed59a2018541310cb97cc9bb1994729c..93c712d784c14747d1f83a089e2ca514ff4f5033 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build 386 amd64 amd64p32
+// +build 386 amd64
 
 #include "textflag.h"
 
index 9e93d1af5d72c6776bb980f19f0aac927a00043f..61db93bd517f153635e0971f8d312ea8d34204a4 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build 386 amd64 amd64p32
+// +build 386 amd64
 
 package cpu_test
 
index 421618eea9149d7cf2cf17a8dbd11a3baf0d5d12..8dad3c810b6e4bcc91022758deb06b857f66f534 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build amd64 amd64p32
+// +build amd64
 
 package math
 
index 1fbc8dd61cf8563c8460a9bc44622e844ec7f94a..b6010f92654e777b5d25250df400d126ab23a7f9 100644 (file)
@@ -6104,9 +6104,6 @@ var funcLayoutTests []funcLayoutTest
 
 func init() {
        var argAlign uintptr = PtrSize
-       if runtime.GOARCH == "amd64p32" {
-               argAlign = 2 * PtrSize
-       }
        roundup := func(x uintptr, a uintptr) uintptr {
                return (x + a - 1) / a * a
        }
index 495679b52ebba216159f00f86be94d9c3d1c0498..231b38b898a40035765737527af06c2afc5d6924 100644 (file)
@@ -16,7 +16,6 @@
 package reflect
 
 import (
-       "runtime"
        "strconv"
        "sync"
        "unicode"
@@ -3015,9 +3014,6 @@ func funcLayout(t *funcType, rcvr *rtype) (frametype *rtype, argSize, retOffset
                offset += arg.size
        }
        argSize = offset
-       if runtime.GOARCH == "amd64p32" {
-               offset += -offset & (8 - 1)
-       }
        offset += -offset & (ptrSize - 1)
        retOffset = offset
        for _, res := range t.out() {
@@ -3033,9 +3029,6 @@ func funcLayout(t *funcType, rcvr *rtype) (frametype *rtype, argSize, retOffset
                size:    offset,
                ptrdata: uintptr(ptrmap.n) * ptrSize,
        }
-       if runtime.GOARCH == "amd64p32" {
-               x.align = 8
-       }
        if ptrmap.n > 0 {
                x.gcdata = &ptrmap.data[0]
        }
index 7fec09962ce8ad96a7485546d87a00869695917c..ffcb204cda5f5ece03cddca3661245b0bde5a91d 100644 (file)
@@ -555,9 +555,6 @@ func callReflect(ctxt *makeFuncImpl, frame unsafe.Pointer, retValid *bool) {
        // Copy results back into argument frame.
        if numOut > 0 {
                off += -off & (ptrSize - 1)
-               if runtime.GOARCH == "amd64p32" {
-                       off = align(off, 8)
-               }
                for i, typ := range ftyp.out() {
                        v := out[i]
                        if v.typ == nil {
@@ -697,8 +694,7 @@ func callMethod(ctxt *methodValue, frame unsafe.Pointer, retValid *bool) {
 
        // Copy in receiver and rest of args.
        storeRcvr(rcvr, scratch)
-       // Align the first arg. Only on amd64p32 the alignment can be
-       // larger than ptrSize.
+       // Align the first arg. The alignment can't be larger than ptrSize.
        argOffset := uintptr(ptrSize)
        if len(t.in()) > 0 {
                argOffset = align(argOffset, uintptr(t.in()[0].align))
@@ -713,17 +709,11 @@ func callMethod(ctxt *methodValue, frame unsafe.Pointer, retValid *bool) {
        // and then copies the results back into scratch.
        call(frametype, fn, scratch, uint32(frametype.size), uint32(retOffset))
 
-       // Copy return values. On amd64p32, the beginning of return values
-       // is 64-bit aligned, so the caller's frame layout (which doesn't have
-       // a receiver) is different from the layout of the fn call, which has
-       // a receiver.
+       // Copy return values.
        // Ignore any changes to args and just copy return values.
        // Avoid constructing out-of-bounds pointers if there are no return values.
        if frametype.size-retOffset > 0 {
                callerRetOffset := retOffset - argOffset
-               if runtime.GOARCH == "amd64p32" {
-                       callerRetOffset = align(argSize-argOffset, 8)
-               }
                // This copies to the stack. Write barriers are not needed.
                memmove(add(frame, callerRetOffset, "frametype.size > retOffset"),
                        add(scratch, retOffset, "frametype.size > retOffset"),
index c886d4e7222311a04abe376393dd1da35e164751..95a3424de2613d98c1adc04e5225287efe9efbe7 100644 (file)
@@ -19,9 +19,6 @@ GLOBL runtime·no_pointers_stackmap(SB),RODATA, $8
 #ifdef GOARCH_386
 #define SKIP4 BYTE $0x90; BYTE $0x90; BYTE $0x90; BYTE $0x90
 #endif
-#ifdef GOARCH_amd64p32
-#define SKIP4 BYTE $0x90; BYTE $0x90; BYTE $0x90; BYTE $0x90
-#endif
 #ifdef GOARCH_wasm
 #define SKIP4 UNDEF; UNDEF; UNDEF; UNDEF
 #endif
index 0741f6361cfdfcac78921ed915cac5f8195a9a35..c228c779e48eff9fffe0ec522ae1ef6e8fbbc1a4 100644 (file)
@@ -187,14 +187,6 @@ func infoBigStruct() []byte {
                        typeScalar, typeScalar, typeScalar, // t int; y uint16; u uint64
                        typePointer, typeScalar, // i string
                }
-       case "amd64p32":
-               return []byte{
-                       typePointer,                                                // q *int
-                       typeScalar, typeScalar, typeScalar, typeScalar, typeScalar, // w byte; e [17]byte
-                       typePointer, typeScalar, typeScalar, // r []byte
-                       typeScalar, typeScalar, typeScalar, typeScalar, typeScalar, // t int; y uint16; u uint64
-                       typePointer, typeScalar, // i string
-               }
        default:
                panic("unknown arch")
        }
index 61f7dbef3c4af8536067071780860ef3d0676f1f..a47e798d9d5492d5d6c7aab198734315479b6169 100644 (file)
 #define        g(r)    0(r)(TLS*1)
 #endif
 
-#ifdef GOARCH_amd64p32
-#define        get_tls(r)      MOVL TLS, r
-#define        g(r)    0(r)(TLS*1)
-#endif
-
 #ifdef GOARCH_386
 #define        get_tls(r)      MOVL TLS, r
 #define        g(r)    0(r)(TLS*1)
index e7908d7800cb9fe9a578181cf90c3f798885f094..798d6dcd9e8ca1e2b6765bb755d361996d6d1a86 100644 (file)
@@ -6,7 +6,7 @@
 //   xxhash: https://code.google.com/p/xxhash/
 // cityhash: https://code.google.com/p/cityhash/
 
-// +build amd64 amd64p32 arm64 mips64 mips64le ppc64 ppc64le s390x wasm
+// +build amd64 arm64 mips64 mips64le ppc64 ppc64le s390x wasm
 
 package runtime
 
similarity index 98%
rename from src/runtime/internal/atomic/atomic_amd64x.go
rename to src/runtime/internal/atomic/atomic_amd64.go
index 31c1636b2ef9178aa2e3ad3d6e38b6c5835d8e06..fc865e892d0efd78e49b76e2e5e915a70aadedac 100644 (file)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build amd64 amd64p32
-
 package atomic
 
 import "unsafe"
index 0ba75447e8c4a97af0abd047e0f36f4a785dfeed..9e4461ce38a12a66042a3b6ca8186b3779df2c26 100644 (file)
@@ -86,14 +86,8 @@ func TestUnaligned64(t *testing.T) {
        // a continual source of pain. Test that on 32-bit systems they crash
        // instead of failing silently.
 
-       switch runtime.GOARCH {
-       default:
-               if unsafe.Sizeof(int(0)) != 4 {
-                       t.Skip("test only runs on 32-bit systems")
-               }
-       case "amd64p32":
-               // amd64p32 can handle unaligned atomics.
-               t.Skipf("test not needed on %v", runtime.GOARCH)
+       if unsafe.Sizeof(int(0)) != 4 {
+               t.Skip("test only runs on 32-bit systems")
        }
 
        x := make([]uint32, 4)
index b89ce9d5636d5b1d13c52c3a3d223b0ba059d11d..aea8401a37b0d9805ca3f55c7c6c84e1ca9b5a77 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build 386 amd64p32 arm mips mipsle
+// +build 386 arm mips mipsle
 
 package runtime
 
index 2d68721701aec29fc597e0c348ee6d719b367929..dd399e00a69d505f0adc61f417ad2d0d9739a38a 100644 (file)
@@ -922,7 +922,7 @@ var (
        // Information about what cpu features are available.
        // Packages outside the runtime should not use these
        // as they are not an external api.
-       // Set on startup in asm_{386,amd64,amd64p32}.s
+       // Set on startup in asm_{386,amd64}.s
        processorVersionInfo uint32
        isIntel              bool
        lfenceBeforeRdtsc    bool
similarity index 98%
rename from src/runtime/signal_amd64x.go
rename to src/runtime/signal_amd64.go
index 459499e9737bad45fad7c42ca6f2e9ffd745bd5b..9e9bb9ca3357cd800cf56b6c330e668c844ab187 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build amd64 amd64p32
+// +build amd64
 // +build darwin dragonfly freebsd linux netbsd openbsd solaris
 
 package runtime
index 149560fd931945203fb18219ffd98bd22674c6e1..a7f52f6b9e2c2ec694f96f7c9e838a382169e81c 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build 386 arm amd64p32 mips mipsle
+// +build 386 arm mips mipsle
 
 package runtime
 
similarity index 93%
rename from src/runtime/stubs_amd64x.go
rename to src/runtime/stubs_amd64.go
index e7a1be81359a579aca39e201deeb54e191599681..b4c0df115324cb24e2d10e2d27b9e2725d11bd3e 100644 (file)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build amd64 amd64p32
-
 package runtime
 
 // stackcheck checks that SP is in range [g->stack.lo, g->stack.hi).
index 2b4ed8bdf56ee1403923a4575dcee28096885782..f917cb8bd7a52d821c4859347316c1aad2f20dbc 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build amd64 amd64p32 386
+// +build amd64 386
 
 package runtime
 
index d074783550e659aa3cd91049b7d2273a6ddfc31d..f919362be86625fb92d1950652681c117af9cda0 100644 (file)
@@ -84,7 +84,7 @@ const (
        // and ppc64le.
        // Tracing won't work reliably for architectures where cputicks is emulated
        // by nanotime, so the value doesn't matter for those architectures.
-       traceTickDiv = 16 + 48*(sys.Goarch386|sys.GoarchAmd64|sys.GoarchAmd64p32)
+       traceTickDiv = 16 + 48*(sys.Goarch386|sys.GoarchAmd64)
        // Maximum number of PCs in a single stack trace.
        // Since events contain only stack id rather than whole stack trace,
        // we can allow quite large values here.
index 5153390f1db647eb1f10f51e2a80a9e83e1ff88a..96fb33c04b2e09e66181e02a105f38ae8f4defae 100644 (file)
@@ -26,8 +26,8 @@ import (
 // takes up only 4 bytes on the stack, while on 64-bit systems it takes up 8 bytes.
 // Typically this is ptrSize.
 //
-// As an exception, amd64p32 has ptrSize == 4 but the CALL instruction still
-// stores an 8-byte return PC onto the stack. To accommodate this, we use regSize
+// As an exception, amd64p32 had ptrSize == 4 but the CALL instruction still
+// stored an 8-byte return PC onto the stack. To accommodate this, we used regSize
 // as the size of the architecture-pushed return PC.
 //
 // usesLR is defined below in terms of minFrameSize, which is defined in
index 39c40c6aaf556edfe0af5d818660df0331ad2162..135f02a726a17604380bc1594f9931807071619d 100644 (file)
@@ -1391,15 +1391,8 @@ func TestUnaligned64(t *testing.T) {
        // Unaligned 64-bit atomics on 32-bit systems are
        // a continual source of pain. Test that on 32-bit systems they crash
        // instead of failing silently.
-
-       switch runtime.GOARCH {
-       default:
-               if !arch32 {
-                       t.Skip("test only runs on 32-bit systems")
-               }
-       case "amd64p32":
-               // amd64p32 can handle unaligned atomics.
-               t.Skipf("test not needed on %v", runtime.GOARCH)
+       if !arch32 {
+               t.Skip("test only runs on 32-bit systems")
        }
 
        x := make([]uint32, 4)
index 013d878b8df9fb917c95188596e57f3777fd16d8..b633490b7173a884367e9848b0202a1b18c02afb 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 //
-// +build 386 amd64 amd64p32 arm arm64 ppc64le mips64le mipsle wasm
+// +build 386 amd64 arm arm64 ppc64le mips64le mipsle wasm
 
 package syscall