diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go index b27d3aac4de032fc4f7154e8d93592e4dfcaf6d2..49f4a5e6a7d6a8d31dc4bb9cf2dfc6c96c98f78c 100644 --- a/src/cmd/dist/build.go +++ b/src/cmd/dist/build.go @@ -87,6 +87,7 @@ var okgoos = []string{ "openbsd", "plan9", "windows", + "aix", } // find reports the first index of p in l[0:n], or else -1. @@ -1388,6 +1389,7 @@ func checkNotStale(goBinary string, targets ...string) { // single point of truth for supported platforms. This list is used // by 'go tool dist list'. var cgoEnabled = map[string]bool{ + "aix/ppc64": false, "darwin/386": true, "darwin/amd64": true, "darwin/arm": true, diff --git a/src/cmd/dist/buildruntime.go b/src/cmd/dist/buildruntime.go index acf2230cb4927d4c379171e76550b4f7b50c255d..10d1552c944d27bdf53473e2925c6f9574b74b95 100644 --- a/src/cmd/dist/buildruntime.go +++ b/src/cmd/dist/buildruntime.go @@ -87,6 +87,10 @@ func mkzbootstrap(file string) { // stack guard size. Larger multipliers are used for non-optimized // builds that have larger stack frames. func stackGuardMultiplier() int { + // On AIX, a larger stack is needed for syscalls + if goos == "aix" { + return 2 + } for _, s := range strings.Split(os.Getenv("GO_GCFLAGS"), " ") { if s == "-N" { return 2 diff --git a/src/cmd/dist/main.go b/src/cmd/dist/main.go index 37e37e2733566a44433df976954a1f1366c8b9a1..bf08869afb7f2565bfa0c72f08ba2d10f3e49f79 100644 --- a/src/cmd/dist/main.go +++ b/src/cmd/dist/main.go @@ -81,6 +81,9 @@ func main() { } case "windows": exe = ".exe" + case "aix": + // uname -m doesn't work under AIX + gohostarch = "ppc64" } sysinit() diff --git a/src/cmd/internal/objabi/head.go b/src/cmd/internal/objabi/head.go index 23c7b62daf62062584eb5dd1393b39b1a98288db..db2221d6b145e1cddb162bb4f495899739802177 100644 --- a/src/cmd/internal/objabi/head.go +++ b/src/cmd/internal/objabi/head.go @@ -48,10 +48,13 @@ const ( Hplan9 Hsolaris Hwindows + Haix ) func (h *HeadType) Set(s string) error { switch s { + case "aix": + *h = Haix case "darwin": *h = Hdarwin case "dragonfly": @@ -82,6 +85,8 @@ func (h *HeadType) Set(s string) error { func (h *HeadType) String() string { switch *h { + case Haix: + return "aix" case Hdarwin: return "darwin" case Hdragonfly: diff --git a/src/cmd/vet/all/main.go b/src/cmd/vet/all/main.go index 24dfafd7bf67a1af7b19bc8babaf7ab6b1d0e7a8..7e4a68101f045786501776336325b17d6b01a39f 100644 --- a/src/cmd/vet/all/main.go +++ b/src/cmd/vet/all/main.go @@ -204,6 +204,12 @@ func (p platform) vet() { return } + if p.os == "aix" && p.arch == "ppc64" { + // TODO(aix): enable as soon as the aix/ppc64 port has fully landed + fmt.Println("skipping aix/ppc64") + return + } + var buf bytes.Buffer fmt.Fprintf(&buf, "go run main.go -p %s\n", p)