package platform

import "internal/platform"

Index

Variables

var List = []OSArch{
	{"aix", "ppc64"},
	{"android", "386"},
	{"android", "amd64"},
	{"android", "arm"},
	{"android", "arm64"},
	{"darwin", "amd64"},
	{"darwin", "arm64"},
	{"dragonfly", "amd64"},
	{"freebsd", "386"},
	{"freebsd", "amd64"},
	{"freebsd", "arm"},
	{"freebsd", "arm64"},
	{"freebsd", "riscv64"},
	{"illumos", "amd64"},
	{"ios", "amd64"},
	{"ios", "arm64"},
	{"js", "wasm"},
	{"linux", "386"},
	{"linux", "amd64"},
	{"linux", "arm"},
	{"linux", "arm64"},
	{"linux", "loong64"},
	{"linux", "mips"},
	{"linux", "mips64"},
	{"linux", "mips64le"},
	{"linux", "mipsle"},
	{"linux", "ppc64"},
	{"linux", "ppc64le"},
	{"linux", "riscv64"},
	{"linux", "s390x"},
	{"linux", "sparc64"},
	{"netbsd", "386"},
	{"netbsd", "amd64"},
	{"netbsd", "arm"},
	{"netbsd", "arm64"},
	{"openbsd", "386"},
	{"openbsd", "amd64"},
	{"openbsd", "arm"},
	{"openbsd", "arm64"},
	{"openbsd", "mips64"},
	{"openbsd", "ppc64"},
	{"openbsd", "riscv64"},
	{"plan9", "386"},
	{"plan9", "amd64"},
	{"plan9", "arm"},
	{"solaris", "amd64"},
	{"wasip1", "wasm"},
	{"windows", "386"},
	{"windows", "amd64"},
	{"windows", "arm"},
	{"windows", "arm64"},
}

List is the list of all valid GOOS/GOARCH combinations, including known-broken ports.

Functions

func ASanSupported

func ASanSupported(goos, goarch string) bool

ASanSupported reports whether goos/goarch supports the address sanitizer option.

func Broken

func Broken(goos, goarch string) bool

Broken reportsr whether goos/goarch is considered a broken port. (See https://go.dev/wiki/PortingPolicy#broken-ports.)

func BuildModeSupported

func BuildModeSupported(compiler, buildmode, goos, goarch string) bool

BuildModeSupported reports whether goos/goarch supports the given build mode using the given compiler. There is a copy of this function in cmd/dist/test.go.

func CgoSupported

func CgoSupported(goos, goarch string) bool

CgoSupported reports whether goos/goarch supports cgo.

func DefaultPIE

func DefaultPIE(goos, goarch string, isRace bool) bool

DefaultPIE reports whether goos/goarch produces a PIE binary when using the "default" buildmode. On Windows this is affected by -race, so force the caller to pass that in to centralize that choice.

func ExecutableHasDWARF

func ExecutableHasDWARF(goos, goarch string) bool

ExecutableHasDWARF reports whether the linked executable includes DWARF symbols on goos/goarch.

func FirstClass

func FirstClass(goos, goarch string) bool

FirstClass reports whether goos/goarch is considered a “first class” port. (See https://go.dev/wiki/PortingPolicy#first-class-ports.)

func FuzzInstrumented

func FuzzInstrumented(goos, goarch string) bool

FuzzInstrumented reports whether fuzzing on goos/goarch uses coverage instrumentation. (FuzzInstrumented implies FuzzSupported.)

func FuzzSupported

func FuzzSupported(goos, goarch string) bool

FuzzSupported reports whether goos/goarch supports fuzzing ('go test -fuzz=.').

func InternalLinkPIESupported

func InternalLinkPIESupported(goos, goarch string) bool

func MSanSupported

func MSanSupported(goos, goarch string) bool

MSanSupported reports whether goos/goarch supports the memory sanitizer option.

func MustLinkExternal

func MustLinkExternal(goos, goarch string, withCgo bool) bool

MustLinkExternal reports whether goos/goarch requires external linking with or without cgo dependencies.

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.

Types

type OSArch

type OSArch struct {
	GOOS, GOARCH string
}

An OSArch is a pair of GOOS and GOARCH values indicating a platform.

func (OSArch) String

func (p OSArch) String() string