...

Package sys

import "cmd/internal/sys"
Overview
Index

Overview ▾

Variables

var Arch386 = &Arch{
    Name:      "386",
    Family:    I386,
    ByteOrder: binary.LittleEndian,
    PtrSize:   4,
    RegSize:   4,
    MinLC:     1,
}
var ArchAMD64 = &Arch{
    Name:      "amd64",
    Family:    AMD64,
    ByteOrder: binary.LittleEndian,
    PtrSize:   8,
    RegSize:   8,
    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,
    ByteOrder: binary.LittleEndian,
    PtrSize:   4,
    RegSize:   4,
    MinLC:     4,
}
var ArchARM64 = &Arch{
    Name:      "arm64",
    Family:    ARM64,
    ByteOrder: binary.LittleEndian,
    PtrSize:   8,
    RegSize:   8,
    MinLC:     4,
}
var ArchMIPS = &Arch{
    Name:      "mips",
    Family:    MIPS,
    ByteOrder: binary.BigEndian,
    PtrSize:   4,
    RegSize:   4,
    MinLC:     4,
}
var ArchMIPS64 = &Arch{
    Name:      "mips64",
    Family:    MIPS64,
    ByteOrder: binary.BigEndian,
    PtrSize:   8,
    RegSize:   8,
    MinLC:     4,
}
var ArchMIPS64LE = &Arch{
    Name:      "mips64le",
    Family:    MIPS64,
    ByteOrder: binary.LittleEndian,
    PtrSize:   8,
    RegSize:   8,
    MinLC:     4,
}
var ArchMIPSLE = &Arch{
    Name:      "mipsle",
    Family:    MIPS,
    ByteOrder: binary.LittleEndian,
    PtrSize:   4,
    RegSize:   4,
    MinLC:     4,
}
var ArchPPC64 = &Arch{
    Name:      "ppc64",
    Family:    PPC64,
    ByteOrder: binary.BigEndian,
    PtrSize:   8,
    RegSize:   8,
    MinLC:     4,
}
var ArchPPC64LE = &Arch{
    Name:      "ppc64le",
    Family:    PPC64,
    ByteOrder: binary.LittleEndian,
    PtrSize:   8,
    RegSize:   8,
    MinLC:     4,
}
var ArchS390X = &Arch{
    Name:      "s390x",
    Family:    S390X,
    ByteOrder: binary.BigEndian,
    PtrSize:   8,
    RegSize:   8,
    MinLC:     2,
}
var ArchWasm = &Arch{
    Name:      "wasm",
    Family:    Wasm,
    ByteOrder: binary.LittleEndian,
    PtrSize:   8,
    RegSize:   8,
    MinLC:     1,
}
var Archs = [...]*Arch{
    Arch386,
    ArchAMD64,
    ArchAMD64P32,
    ArchARM,
    ArchARM64,
    ArchMIPS,
    ArchMIPSLE,
    ArchMIPS64,
    ArchMIPS64LE,
    ArchPPC64,
    ArchPPC64LE,
    ArchS390X,
    ArchWasm,
}

func MSanSupported

func MSanSupported(goos, goarch string) bool

MSanSupported reports whether goos/goarch supports the memory sanitizer option. There is a copy of this function in cmd/dist/test.go.

func MustLinkExternal

func MustLinkExternal(goos, goarch string) bool

MustLinkExternal reports whether goos/goarch requires external linking.

func RaceDetectorSupported

func RaceDetectorSupported(goos, goarch string) bool

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.

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
}

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, amd64 and amd64p32 are both members of the AMD64 family, and ppc64 and ppc64le are both members of the PPC64 family.

const (
    NoArch ArchFamily = iota
    AMD64
    ARM
    ARM64
    I386
    MIPS
    MIPS64
    PPC64
    S390X
    Wasm
)