libgo: update x/sys/cpu after gccgo support added
authorClément Chigot <chigot.c@gmail.com>
Tue, 19 May 2020 14:03:54 +0000 (16:03 +0200)
committerIan Lance Taylor <iant@golang.org>
Mon, 25 May 2020 20:43:44 +0000 (13:43 -0700)
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/234597

gcc/go/gofrontend/MERGE
libgo/go/golang.org/x/sys/cpu/cpu_aix.go [new file with mode: 0644]
libgo/go/golang.org/x/sys/cpu/cpu_aix_ppc64.go [deleted file]
libgo/go/golang.org/x/sys/cpu/syscall_aix_gccgo.go [new file with mode: 0644]

index bc9c1f07eda6eefc08d10aa9cd74f42a91d69776..284374820b0dc11aa5f2e0805f5687d69eb5cf7e 100644 (file)
@@ -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 (file)
index 0000000..02d0312
--- /dev/null
@@ -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 (file)
index b0ede11..0000000
+++ /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 (file)
index 0000000..2609cc4
--- /dev/null
@@ -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
+}