Documentation ¶
Index ¶
- Variables
- func BuildModeSupported(compiler, buildmode, goos, goarch string) bool
- func InternalLinkPIESupported(goos, goarch string) bool
- func MSanSupported(goos, goarch string) bool
- func MustLinkExternal(goos, goarch string) bool
- func RaceDetectorSupported(goos, goarch string) bool
- type Arch
- type ArchFamily
Constants ¶
This section is empty.
Variables ¶
var Arch386 = &Arch{ Name: "386", Family: I386, ByteOrder: binary.LittleEndian, PtrSize: 4, RegSize: 4, MinLC: 1, Alignment: 1, }
var ArchAMD64 = &Arch{ Name: "amd64", Family: AMD64, ByteOrder: binary.LittleEndian, PtrSize: 8, RegSize: 8, MinLC: 1, Alignment: 1, }
var ArchARM = &Arch{ Name: "arm", Family: ARM, ByteOrder: binary.LittleEndian, PtrSize: 4, RegSize: 4, MinLC: 4, Alignment: 4, }
var ArchARM64 = &Arch{ Name: "arm64", Family: ARM64, ByteOrder: binary.LittleEndian, PtrSize: 8, RegSize: 8, MinLC: 4, Alignment: 1, }
var ArchMIPS = &Arch{ Name: "mips", Family: MIPS, ByteOrder: binary.BigEndian, PtrSize: 4, RegSize: 4, MinLC: 4, Alignment: 4, }
var ArchMIPS64 = &Arch{ Name: "mips64", Family: MIPS64, ByteOrder: binary.BigEndian, PtrSize: 8, RegSize: 8, MinLC: 4, Alignment: 8, }
var ArchMIPS64LE = &Arch{ Name: "mips64le", Family: MIPS64, ByteOrder: binary.LittleEndian, PtrSize: 8, RegSize: 8, MinLC: 4, Alignment: 8, }
var ArchMIPSLE = &Arch{ Name: "mipsle", Family: MIPS, ByteOrder: binary.LittleEndian, PtrSize: 4, RegSize: 4, MinLC: 4, Alignment: 4, }
var ArchPPC64 = &Arch{ Name: "ppc64", Family: PPC64, ByteOrder: binary.BigEndian, PtrSize: 8, RegSize: 8, MinLC: 4, Alignment: 1, }
var ArchPPC64LE = &Arch{ Name: "ppc64le", Family: PPC64, ByteOrder: binary.LittleEndian, PtrSize: 8, RegSize: 8, MinLC: 4, Alignment: 1, }
var ArchRISCV64 = &Arch{ Name: "riscv64", Family: RISCV64, ByteOrder: binary.LittleEndian, PtrSize: 8, RegSize: 8, MinLC: 4, Alignment: 8, }
var ArchS390X = &Arch{ Name: "s390x", Family: S390X, ByteOrder: binary.BigEndian, PtrSize: 8, RegSize: 8, MinLC: 2, Alignment: 1, }
var ArchWasm = &Arch{ Name: "wasm", Family: Wasm, ByteOrder: binary.LittleEndian, PtrSize: 8, RegSize: 8, MinLC: 1, Alignment: 1, }
var Archs = [...]*Arch{ Arch386, ArchAMD64, ArchARM, ArchARM64, ArchMIPS, ArchMIPSLE, ArchMIPS64, ArchMIPS64LE, ArchPPC64, ArchPPC64LE, ArchRISCV64, ArchS390X, ArchWasm, }
Functions ¶
func BuildModeSupported ¶ added in go1.14
BuildModeSupported reports whether goos/goarch supports the given build mode using the given compiler.
func InternalLinkPIESupported ¶ added in go1.16
func MSanSupported ¶ added in go1.12
MSanSupported reports whether goos/goarch supports the memory sanitizer option. There is a copy of this function in misc/cgo/testsanitizers/cc_test.go.
func MustLinkExternal ¶ added in go1.13
MustLinkExternal reports whether goos/goarch requires external linking. (This is the opposite of internal/testenv.CanInternalLink. Keep them in sync.)
func RaceDetectorSupported ¶ added in go1.12
RaceDetectorSupported reports whether goos/goarch supports the race detector. There is a copy of this function in cmd/dist/test.go. Race detector only supports 48-bit VMA on arm64. But it will always return true for arm64, because we don't have VMA size information during the compile time.
Types ¶
type Arch ¶
type Arch struct { Name string Family ArchFamily ByteOrder binary.ByteOrder // PtrSize is the size in bytes of pointers and the // predeclared "int", "uint", and "uintptr" types. PtrSize int // RegSize is the size in bytes of general purpose registers. RegSize int // MinLC is the minimum length of an instruction code. MinLC int // Alignment is maximum alignment required by the architecture // for any (compiler-generated) load or store instruction. // Loads or stores smaller than Alignment must be naturally aligned. // Loads or stores larger than Alignment need only be Alignment-aligned. Alignment int8 }
Arch represents an individual architecture.
func (*Arch) InFamily ¶
func (a *Arch) InFamily(xs ...ArchFamily) bool
InFamily reports whether a is a member of any of the specified architecture families.
type ArchFamily ¶
type ArchFamily byte
ArchFamily represents a family of one or more related architectures. For example, ppc64 and ppc64le are both members of the PPC64 family.
const ( NoArch ArchFamily = iota AMD64 ARM ARM64 I386 MIPS MIPS64 PPC64 RISCV64 S390X Wasm )