This libgo patch updates the x/sys/cpu directory with better support
for gccgo on AIX.  Bootstrapped and ran Go tests on
x86_64-pc-linux-gnu.  Committed to master.

Ian
e479602af14fc5e76c9040846b2f5e85e126a472
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index bc9c1f07eda..284374820b0 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -1,4 +1,4 @@
-bc27341f245a5cc54ac7530d037a609db72b677c
+ea58b8491064fbed18a220571a3043c38dccf7c7
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
diff --git a/libgo/go/golang.org/x/sys/cpu/cpu_aix.go 
b/libgo/go/golang.org/x/sys/cpu/cpu_aix.go
new file mode 100644
index 00000000000..02d03129e50
--- /dev/null
+++ b/libgo/go/golang.org/x/sys/cpu/cpu_aix.go
@@ -0,0 +1,32 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build aix
+
+package cpu
+
+const (
+       // getsystemcfg constants
+       _SC_IMPL     = 2
+       _IMPL_POWER8 = 0x10000
+       _IMPL_POWER9 = 0x20000
+)
+
+func init() {
+       impl := getsystemcfg(_SC_IMPL)
+       if impl&_IMPL_POWER8 != 0 {
+               PPC64.IsPOWER8 = true
+       }
+       if impl&_IMPL_POWER9 != 0 {
+               PPC64.IsPOWER9 = true
+       }
+
+       Initialized = true
+}
+
+func getsystemcfg(label int) (n uint64) {
+       r0, _ := callgetsystemcfg(label)
+       n = uint64(r0)
+       return
+}
diff --git a/libgo/go/golang.org/x/sys/cpu/cpu_aix_ppc64.go 
b/libgo/go/golang.org/x/sys/cpu/cpu_aix_ppc64.go
deleted file mode 100644
index b0ede112d4e..00000000000
--- a/libgo/go/golang.org/x/sys/cpu/cpu_aix_ppc64.go
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build aix,ppc64
-
-package cpu
-
-const (
-       // getsystemcfg constants
-       _SC_IMPL     = 2
-       _IMPL_POWER8 = 0x10000
-       _IMPL_POWER9 = 0x20000
-)
-
-func init() {
-       impl := getsystemcfg(_SC_IMPL)
-       if impl&_IMPL_POWER8 != 0 {
-               PPC64.IsPOWER8 = true
-       }
-       if impl&_IMPL_POWER9 != 0 {
-               PPC64.IsPOWER9 = true
-       }
-
-       Initialized = true
-}
-
-func getsystemcfg(label int) (n uint64) {
-       r0, _ := callgetsystemcfg(label)
-       n = uint64(r0)
-       return
-}
diff --git a/libgo/go/golang.org/x/sys/cpu/syscall_aix_gccgo.go 
b/libgo/go/golang.org/x/sys/cpu/syscall_aix_gccgo.go
new file mode 100644
index 00000000000..2609cc49ae7
--- /dev/null
+++ b/libgo/go/golang.org/x/sys/cpu/syscall_aix_gccgo.go
@@ -0,0 +1,27 @@
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Recreate a getsystemcfg syscall handler instead of
+// using the one provided by x/sys/unix to avoid having
+// the dependency between them. (See golang.org/issue/32102)
+// Morover, this file will be used during the building of
+// gccgo's libgo and thus must not use a CGo method.
+
+// +build aix
+// +build gccgo
+
+package cpu
+
+import (
+       "syscall"
+)
+
+//extern getsystemcfg
+func gccgoGetsystemcfg(label uint32) (r uint64)
+
+func callgetsystemcfg(label int) (r1 uintptr, e1 syscall.Errno) {
+       r1 = uintptr(gccgoGetsystemcfg(uint32(label)))
+       e1 = syscall.GetErrno()
+       return
+}

Reply via email to