* libgo: Update to Go 1.13beta1 release
@ 2019-09-06 18:29 Ian Lance Taylor
2019-09-07 12:03 ` Andreas Schwab
` (3 more replies)
0 siblings, 4 replies; 11+ messages in thread
From: Ian Lance Taylor @ 2019-09-06 18:29 UTC (permalink / raw)
To: gcc-patches, gofrontend-dev
[-- Attachment #1: Type: text/plain, Size: 631 bytes --]
I've committed a patch to update libgo to the Go 1.13beta1 release.
As is usual with these updates, the patch is too large to include
here; I've included the diffs of the various GCC-specific configury
and other files. Bootstrapped and ran Go testsuite on
x86_64-pc-linux-gnu. Committed to mainline.
Ian
gotools:
2019-09-06 Ian Lance Taylor <iant@golang.org>
* Makefile.am (check-carchive-test): Just run "go test", not "go
test carchive_test.go".
* Makefile.in: Regenerate.
gcc/testsuite:
2019-09-06 Ian Lance Taylor <iant@golang.org>
* go.test/test/fixedbugs/bug369.go: Update to match libgo update
to Go 1.13beta1.
[-- Attachment #2: patch.txt --]
[-- Type: text/plain, Size: 27182 bytes --]
Index: libgo/MERGE
===================================================================
--- libgo/MERGE (revision 275396)
+++ libgo/MERGE (working copy)
@@ -1,4 +1,4 @@
-ac02fdec7cd16ea8d3de1fc33def9cfabec5170d
+60f14fddfee107dedd76c0be6b422a3d8ccc841a
The first line of this file holds the git revision number of the
last merge done from the master library sources.
Index: libgo/Makefile.am
===================================================================
--- libgo/Makefile.am (revision 275396)
+++ libgo/Makefile.am (working copy)
@@ -187,6 +187,7 @@ toolexeclibgocrypto_DATA = \
crypto/des.gox \
crypto/dsa.gox \
crypto/ecdsa.gox \
+ crypto/ed25519.gox \
crypto/elliptic.gox \
crypto/hmac.gox \
crypto/md5.gox \
@@ -399,8 +400,7 @@ toolexeclibgounicode_DATA = \
# internal packages nothing will explicitly depend on them.
# Force them to be built.
noinst_DATA = \
- internal/x/net/internal/nettest.gox \
- internal/x/net/nettest.gox \
+ golang.org/x/net/nettest.gox \
internal/testenv.gox \
internal/trace.gox \
net/internal/socktest.gox \
@@ -482,7 +482,6 @@ s-version: Makefile
echo " BigEndian = `$(SHELL) $(srcdir)/goarch.sh $(GOARCH) bigendian`" >> version.go.tmp
echo " CacheLineSize = `$(SHELL) $(srcdir)/goarch.sh $(GOARCH) cachelinesize`" >> version.go.tmp
echo " DefaultPhysPageSize = `$(SHELL) $(srcdir)/goarch.sh $(GOARCH) defaultphyspagesize`" >> version.go.tmp
- echo " HugePageSize = `$(SHELL) $(srcdir)/goarch.sh $(GOARCH) hugepagesize`" >> version.go.tmp
echo " Int64Align = `$(SHELL) $(srcdir)/goarch.sh $(GOARCH) int64align`" >> version.go.tmp
echo " MinFrameSize = `$(SHELL) $(srcdir)/goarch.sh $(GOARCH) minframesize`" >> version.go.tmp
echo " PCQuantum = `$(SHELL) $(srcdir)/goarch.sh $(GOARCH) pcquantum`" >> version.go.tmp
@@ -516,14 +515,16 @@ s-objabi: Makefile
rm -f objabi.go.tmp
echo "package objabi" > objabi.go.tmp
echo "import \"runtime\"" >> objabi.go.tmp
- echo 'func init() { defaultGOROOT = `$(prefix)` }' >> objabi.go.tmp
+ echo 'func defaultGOROOTValue() string { return `$(prefix)` }' >> objabi.go.tmp
echo 'const defaultGO386 = `sse2`' >> objabi.go.tmp
echo 'const defaultGOARM = `5`' >> objabi.go.tmp
echo 'const defaultGOMIPS = `hardfloat`' >> objabi.go.tmp
echo 'const defaultGOMIPS64 = `hardfloat`' >> objabi.go.tmp
+ echo 'const defaultGOPPC64 = `power8`' >> objabi.go.tmp
echo 'const defaultGOOS = runtime.GOOS' >> objabi.go.tmp
echo 'const defaultGOARCH = runtime.GOARCH' >> objabi.go.tmp
echo 'const defaultGO_EXTLINK_ENABLED = ``' >> objabi.go.tmp
+ echo 'const defaultGO_LDSO = ``' >> objabi.go.tmp
echo 'const version = `'`cat $(srcdir)/VERSION | sed 1q`' '`$(GOC) --version | sed 1q`'`' >> objabi.go.tmp
echo 'const stackGuardMultiplierDefault = 1' >> objabi.go.tmp
echo 'const goexperiment = ``' >> objabi.go.tmp
@@ -591,7 +592,7 @@ s-zstdpkglist: Makefile
echo 'package goroot' > zstdpkglist.go.tmp
echo "" >> zstdpkglist.go.tmp
echo 'var stdpkg = map[string]bool{' >> zstdpkglist.go.tmp
- echo $(libgo_go_objs) 'unsafe.lo' 'runtime/cgo.lo' | sed 's|[a-z0-9_/]*_c\.lo||g' | sed 's|\([a-z0-9_/]*\)\.lo|"\1": true,|g' >> zstdpkglist.go.tmp
+ echo $(libgo_go_objs) 'unsafe.lo' 'runtime/cgo.lo' | sed 's|[a-z0-9_./]*_c\.lo||g' | sed 's|\([a-z0-9_./]*\)\.lo|"\1": true,|g' >> zstdpkglist.go.tmp
echo '}' >> zstdpkglist.go.tmp
$(SHELL) $(srcdir)/mvifdiff.sh zstdpkglist.go.tmp zstdpkglist.go
$(STAMP) $@
@@ -692,13 +693,14 @@ libgo_go_objs = \
syscall/errno.lo \
syscall/signame.lo \
syscall/wait.lo \
- $(internal_x_net_lif_lo) \
- $(internal_x_net_route_lo) \
+ $(golangorg_x_net_lif_lo) \
+ $(golangorg_x_net_route_lo) \
log/syslog/syslog_c.lo \
$(os_lib_inotify_lo) \
runtime/internal/atomic_c.lo \
sync/atomic_c.lo \
- internal/cpu/cpu_gccgo.lo
+ internal/cpu/cpu_gccgo.lo \
+ golang.org/x/sys/cpu_gccgo.lo
libgo_ldflags = \
-version-info $(libtool_VERSION) $(PTHREAD_CFLAGS) $(AM_LDFLAGS)
@@ -1020,6 +1022,11 @@ internal/cpu/cpu_gccgo.lo: go/internal/c
@$(MKDIR_P) internal/cpu
$(LTCOMPILE) -c -o $@ $(srcdir)/go/internal/cpu/cpu_gccgo.c
+# Similarly, golang.org/x/sys/cpu needs some C code.
+golang.org/x/sys/cpu_gccgo.lo: go/golang.org/x/sys/cpu/cpu_gccgo.c runtime.inc
+ @$(MKDIR_P) golang.org/x/sys
+ $(LTCOMPILE) -c -o $@ $(srcdir)/go/golang.org/x/sys/cpu/cpu_gccgo.c
+
# Solaris 11.4 changed the type of fields in struct stat.
# Use a build tag, based on a configure check, to cope.
if LIBGO_IS_SOLARIS
@@ -1038,10 +1045,10 @@ if LIBGO_IS_BSD
$(eval $(call PACKAGE_template,internal/x/net/route))
-internal_x_net_route_lo = \
- internal/x/net/route.lo
-internal_x_net_route_check = \
- internal/x/net/route/check
+golangorg_x_net_route_lo = \
+ golang.org/net/route.lo
+golangorg_x_net_route_check = \
+ golang.org/x/net/route/check
endif
@@ -1051,17 +1058,17 @@ if LIBGO_IS_SOLARIS
$(eval $(call PACKAGE_template,internal/x/net/lif))
-internal_x_net_lif_lo = \
- internal/x/net/lif.lo
-internal_x_net_lif_check = \
- internal/x/net/lif/check
+golangorg_x_net_lif_lo = \
+ golang.org/x/net/lif.lo
+golangorg_x_net_lif_check = \
+ golang.org/x/net/lif/check
endif
TPACKAGES = $(shell cat $(srcdir)/check-packages.txt)
TEST_PACKAGES = $(addsuffix /check,$(TPACKAGES)) \
- $(internal_x_net_lif_check) \
- $(internal_x_net_route_check)
+ $(golangorg_x_net_lif_check) \
+ $(golangorg_x_net_route_check)
check: check-tail
check-recursive: check-head
Index: libgo/VERSION
===================================================================
--- libgo/VERSION (revision 275396)
+++ libgo/VERSION (working copy)
@@ -1 +1 @@
-go1.12.2
+go1.13beta1
Index: libgo/check-packages.txt
===================================================================
--- libgo/check-packages.txt (revision 275396)
+++ libgo/check-packages.txt (working copy)
@@ -21,7 +21,6 @@ cmd/go/internal/par
cmd/go/internal/search
cmd/go/internal/semver
cmd/go/internal/txtar
-cmd/go/internal/web2
cmd/go/internal/work
cmd/internal/buildid
cmd/internal/edit
@@ -42,6 +41,7 @@ crypto/cipher
crypto/des
crypto/dsa
crypto/ecdsa
+crypto/ed25519
crypto/elliptic
crypto/hmac
crypto/internal/subtle
@@ -106,20 +106,11 @@ image/png
index/suffixarray
internal/cpu
internal/fmtsort
+internal/oserror
internal/poll
+internal/reflectlite
internal/singleflight
internal/trace
-internal/x/crypto/chacha20poly1305
-internal/x/crypto/cryptobyte
-internal/x/crypto/curve25519
-internal/x/crypto/hkdf
-internal/x/crypto/internal/chacha20
-internal/x/crypto/poly1305
-internal/x/net/dns/dnsmessage
-internal/x/net/http/httpguts
-internal/x/net/http/httpproxy
-internal/x/net/http2/hpack
-internal/x/net/idna
internal/xcoff
io
io/ioutil
Index: libgo/configure.ac
===================================================================
--- libgo/configure.ac (revision 275396)
+++ libgo/configure.ac (working copy)
@@ -10,7 +10,7 @@ AC_INIT(package-unused, version-unused,,
AC_CONFIG_SRCDIR(Makefile.am)
AC_CONFIG_HEADER(config.h)
-libtool_VERSION=14:0:0
+libtool_VERSION=15:0:0
AC_SUBST(libtool_VERSION)
AM_ENABLE_MULTILIB(, ..)
@@ -154,7 +154,7 @@ AC_SUBST(go_include)
# All known GOOS values. This is the union of all operating systems
# supported by the gofrontend and all operating systems supported by
# the gc toolchain.
-ALLGOOS="aix android darwin dragonfly freebsd hurd irix js linux netbsd openbsd plan9 rtems solaris windows"
+ALLGOOS="aix android darwin dragonfly freebsd hurd illumos irix js linux netbsd openbsd plan9 rtems solaris windows"
is_darwin=no
is_freebsd=no
Index: libgo/go/reflect/makefunc_ffi.go
===================================================================
--- libgo/go/reflect/makefunc_ffi.go (revision 275396)
+++ libgo/go/reflect/makefunc_ffi.go (working copy)
@@ -44,11 +44,6 @@ func FFICallbackGo(results unsafe.Pointe
off := uintptr(0)
for i, typ := range ftyp.out {
v := out[i]
- if v.typ != typ {
- panic("reflect: function created by MakeFunc using " + funcName(impl.fn) +
- " returned wrong type: have " +
- out[i].typ.String() + " for " + typ.String())
- }
if v.flag&flagRO != 0 {
panic("reflect: function created by MakeFunc using " + funcName(impl.fn) +
" returned value obtained from unexported field")
@@ -56,6 +51,12 @@ func FFICallbackGo(results unsafe.Pointe
off = align(off, uintptr(typ.fieldAlign))
addr := unsafe.Pointer(uintptr(results) + off)
+
+ // Convert v to type typ if v is assignable to a variable
+ // of type t in the language spec.
+ // See issue 28761.
+ v = v.assignTo("reflect.MakeFunc", typ, addr)
+
if v.flag&flagIndir == 0 && (v.kind() == Ptr || v.kind() == UnsafePointer) {
*(*unsafe.Pointer)(addr) = v.ptr
} else {
Index: libgo/go/runtime/mem_gccgo.go
===================================================================
--- libgo/go/runtime/mem_gccgo.go (revision 275396)
+++ libgo/go/runtime/mem_gccgo.go (working copy)
@@ -7,7 +7,6 @@
package runtime
import (
- "runtime/internal/sys"
"unsafe"
)
@@ -92,37 +91,35 @@ func sysUnused(v unsafe.Pointer, n uintp
// gets most of the benefit of huge pages while keeping the
// number of VMAs under control. With hugePageSize = 2MB, even
// a pessimal heap can reach 128GB before running out of VMAs.
- if sys.HugePageSize != 0 && _MADV_NOHUGEPAGE != 0 {
- var s uintptr = sys.HugePageSize // division by constant 0 is a compile-time error :(
-
+ if physHugePageSize != 0 && _MADV_NOHUGEPAGE != 0 {
// If it's a large allocation, we want to leave huge
// pages enabled. Hence, we only adjust the huge page
// flag on the huge pages containing v and v+n-1, and
// only if those aren't aligned.
var head, tail uintptr
- if uintptr(v)%s != 0 {
+ if uintptr(v)%physHugePageSize != 0 {
// Compute huge page containing v.
- head = uintptr(v) &^ (s - 1)
+ head = uintptr(v) &^ (physHugePageSize - 1)
}
- if (uintptr(v)+n)%s != 0 {
+ if (uintptr(v)+n)%physHugePageSize != 0 {
// Compute huge page containing v+n-1.
- tail = (uintptr(v) + n - 1) &^ (s - 1)
+ tail = (uintptr(v) + n - 1) &^ (physHugePageSize - 1)
}
// Note that madvise will return EINVAL if the flag is
// already set, which is quite likely. We ignore
// errors.
- if head != 0 && head+sys.HugePageSize == tail {
+ if head != 0 && head+physHugePageSize == tail {
// head and tail are different but adjacent,
// so do this in one call.
- madvise(unsafe.Pointer(head), 2*sys.HugePageSize, _MADV_NOHUGEPAGE)
+ madvise(unsafe.Pointer(head), 2*physHugePageSize, _MADV_NOHUGEPAGE)
} else {
// Advise the huge pages containing v and v+n-1.
if head != 0 {
- madvise(unsafe.Pointer(head), sys.HugePageSize, _MADV_NOHUGEPAGE)
+ madvise(unsafe.Pointer(head), physHugePageSize, _MADV_NOHUGEPAGE)
}
if tail != 0 && tail != head {
- madvise(unsafe.Pointer(tail), sys.HugePageSize, _MADV_NOHUGEPAGE)
+ madvise(unsafe.Pointer(tail), physHugePageSize, _MADV_NOHUGEPAGE)
}
}
}
@@ -142,21 +139,23 @@ func sysUnused(v unsafe.Pointer, n uintp
}
func sysUsed(v unsafe.Pointer, n uintptr) {
- if sys.HugePageSize != 0 && _MADV_HUGEPAGE != 0 {
- // Partially undo the NOHUGEPAGE marks from sysUnused
- // for whole huge pages between v and v+n. This may
- // leave huge pages off at the end points v and v+n
- // even though allocations may cover these entire huge
- // pages. We could detect this and undo NOHUGEPAGE on
- // the end points as well, but it's probably not worth
- // the cost because when neighboring allocations are
- // freed sysUnused will just set NOHUGEPAGE again.
- var s uintptr = sys.HugePageSize
+ // Partially undo the NOHUGEPAGE marks from sysUnused
+ // for whole huge pages between v and v+n. This may
+ // leave huge pages off at the end points v and v+n
+ // even though allocations may cover these entire huge
+ // pages. We could detect this and undo NOHUGEPAGE on
+ // the end points as well, but it's probably not worth
+ // the cost because when neighboring allocations are
+ // freed sysUnused will just set NOHUGEPAGE again.
+ sysHugePage(v, n)
+}
+func sysHugePage(v unsafe.Pointer, n uintptr) {
+ if physHugePageSize != 0 && _MADV_HUGEPAGE != 0 {
// Round v up to a huge page boundary.
- beg := (uintptr(v) + (s - 1)) &^ (s - 1)
+ beg := (uintptr(v) + (physHugePageSize - 1)) &^ (physHugePageSize - 1)
// Round v+n down to a huge page boundary.
- end := (uintptr(v) + n) &^ (s - 1)
+ end := (uintptr(v) + n) &^ (physHugePageSize - 1)
if beg < end {
madvise(unsafe.Pointer(beg), end-beg, _MADV_HUGEPAGE)
Index: libgo/goarch.sh
===================================================================
--- libgo/goarch.sh (revision 275396)
+++ libgo/goarch.sh (working copy)
@@ -14,9 +14,6 @@
# - defaultphyspagesize: the default physical page size in bytes
# (not currently used, but maybe some day)
# - family: the processor family, from ALLGOARCHFAMILY in configure.ac
-# - hugepagesize: size of a huge page in bytes
-# (used only to decide when to use madvise with MADV_[NO]HUGEPAGE)
-# (set to 0 if there are no huge pages)
# - int64align: alignment of int64 type in bytes
# - maxalign: maximum alignment of values of Go types in bytes
# - minframesize: size of smallest possible function frame in bytes
@@ -37,7 +34,6 @@ bigendian=false
cachelinesize=64
defaultphyspagesize=4096
family=unknown
-hugepagesize=0
int64align=8
maxalign=8
minframesize=0
@@ -47,7 +43,6 @@ ptrsize=8
case $goarch in
386)
family=I386
- hugepagesize="1 << 21"
int64align=4
maxalign=4
ptrsize=4
@@ -59,11 +54,9 @@ case $goarch in
;;
amd64)
family=AMD64
- hugepagesize="1 << 21"
;;
amd64p32)
family=AMD64
- hugepagesize="1 << 21"
ptrsize=4
;;
arm | armbe)
@@ -236,9 +229,6 @@ case $keyword in
family)
echo $family
;;
- hugepagesize)
- echo $hugepagesize
- ;;
int64align)
echo $int64align
;;
Index: libgo/gotool-packages.txt
===================================================================
--- libgo/gotool-packages.txt (revision 275396)
+++ libgo/gotool-packages.txt (working copy)
@@ -1,3 +1,4 @@
+cmd/go/internal/auth
cmd/go/internal/base
cmd/go/internal/bug
cmd/go/internal/cache
@@ -27,20 +28,22 @@ cmd/go/internal/modinfo
cmd/go/internal/modload
cmd/go/internal/module
cmd/go/internal/mvs
+cmd/go/internal/note
cmd/go/internal/par
cmd/go/internal/renameio
+cmd/go/internal/robustio
cmd/go/internal/run
cmd/go/internal/search
cmd/go/internal/semver
cmd/go/internal/str
+cmd/go/internal/sumweb
cmd/go/internal/test
+cmd/go/internal/tlog
cmd/go/internal/tool
cmd/go/internal/txtar
cmd/go/internal/version
cmd/go/internal/vet
cmd/go/internal/web
-cmd/go/internal/web2
-cmd/go/internal/webtest
cmd/go/internal/work
cmd/internal/browser
cmd/internal/buildid
@@ -60,6 +63,7 @@ golang.org/x/tools/go/analysis/passes/cg
golang.org/x/tools/go/analysis/passes/composite
golang.org/x/tools/go/analysis/passes/copylock
golang.org/x/tools/go/analysis/passes/ctrlflow
+golang.org/x/tools/go/analysis/passes/errorsas
golang.org/x/tools/go/analysis/passes/httpresponse
golang.org/x/tools/go/analysis/passes/inspect
golang.org/x/tools/go/analysis/passes/internal/analysisutil
Index: libgo/libgo-packages.txt
===================================================================
--- libgo/libgo-packages.txt (revision 275396)
+++ libgo/libgo-packages.txt (working copy)
@@ -17,6 +17,8 @@ crypto/cipher
crypto/des
crypto/dsa
crypto/ecdsa
+crypto/ed25519
+crypto/ed25519/internal/edwards25519
crypto/elliptic
crypto/hmac
crypto/internal/randutil
@@ -70,6 +72,25 @@ go/printer
go/scanner
go/token
go/types
+golang.org/x/crypto/chacha20poly1305
+golang.org/x/crypto/cryptobyte
+golang.org/x/crypto/cryptobyte/asn1
+golang.org/x/crypto/curve25519
+golang.org/x/crypto/hkdf
+golang.org/x/crypto/internal/chacha20
+golang.org/x/crypto/internal/subtle
+golang.org/x/crypto/poly1305
+golang.org/x/net/dns/dnsmessage
+golang.org/x/net/http/httpguts
+golang.org/x/net/http/httpproxy
+golang.org/x/net/http2/hpack
+golang.org/x/net/idna
+golang.org/x/net/nettest
+golang.org/x/sys/cpu
+golang.org/x/text/secure/bidirule
+golang.org/x/text/transform
+golang.org/x/text/unicode/bidi
+golang.org/x/text/unicode/norm
hash
hash/adler32
hash/crc32
@@ -90,32 +111,19 @@ internal/bytealg
internal/cpu
internal/fmtsort
internal/goroot
+internal/goversion
+internal/lazyregexp
+internal/lazytemplate
internal/nettrace
+internal/oserror
internal/poll
internal/race
+internal/reflectlite
internal/singleflight
internal/syscall/unix
internal/testenv
internal/testlog
internal/trace
-internal/x/crypto/chacha20poly1305
-internal/x/crypto/cryptobyte
-internal/x/crypto/cryptobyte/asn1
-internal/x/crypto/curve25519
-internal/x/crypto/hkdf
-internal/x/crypto/internal/chacha20
-internal/x/crypto/poly1305
-internal/x/net/dns/dnsmessage
-internal/x/net/http/httpguts
-internal/x/net/http/httpproxy
-internal/x/net/http2/hpack
-internal/x/net/idna
-internal/x/net/internal/nettest
-internal/x/net/nettest
-internal/x/text/secure/bidirule
-internal/x/text/transform
-internal/x/text/unicode/bidi
-internal/x/text/unicode/norm
internal/xcoff
io
io/ioutil
Index: libgo/match.sh
===================================================================
--- libgo/match.sh (revision 275396)
+++ libgo/match.sh (working copy)
@@ -135,7 +135,7 @@ for f in $gofiles; do
if test x$tag1 != xnonmatchingtag -a x$tag2 != xnonmatchingtag; then
# Pipe through cat so that `set -e` doesn't affect fgrep.
- tags=`sed '/^package /q' < $f | grep '^// +build ' | cat`
+ tags=`sed '/^package /q' < $f | grep '^// \?+build ' | cat`
omatch=true
first=true
match=false
@@ -143,7 +143,7 @@ for f in $gofiles; do
case $tag in
"//")
;;
- "+build")
+ "+build" | "//+build")
if test "$first" = "true"; then
first=false
elif test "$match" = "false"; then
Index: libgo/mkrsysinfo.sh
===================================================================
--- libgo/mkrsysinfo.sh (revision 275396)
+++ libgo/mkrsysinfo.sh (working copy)
@@ -86,13 +86,11 @@ echo $timespec | \
-e 's/tv_sec *[a-zA-Z0-9_]*/tv_sec timespec_sec_t/' \
-e 's/tv_nsec *[a-zA-Z0-9_]*/tv_nsec timespec_nsec_t/' >> ${OUT}
echo >> ${OUT}
-echo "func (ts *timespec) set_sec(x int64) {" >> ${OUT}
-echo " ts.tv_sec = timespec_sec_t(x)" >> ${OUT}
+echo "func (ts *timespec) setNsec(ns int64) {" >> ${OUT}
+echo " ts.tv_sec = timespec_sec_t(ns / 1e9)" >> ${OUT}
+echo " ts.tv_nsec = timespec_nsec_t(ns % 1e9)" >> ${OUT}
echo "}" >> ${OUT}
echo >> ${OUT}
-echo "func (ts *timespec) set_nsec(x int32) {" >> ${OUT}
-echo " ts.tv_nsec = timespec_nsec_t(x)" >> ${OUT}
-echo "}" >> ${OUT}
# Define the epollevent struct. This needs special attention because
# the C definition uses a union and is sometimes packed.
Index: libgo/runtime/go-fieldtrack.c
===================================================================
--- libgo/runtime/go-fieldtrack.c (revision 275396)
+++ libgo/runtime/go-fieldtrack.c (working copy)
@@ -25,21 +25,6 @@ __go_fieldtrack (byte *p __attribute__ (
/* A runtime function to add all the tracked fields to a
map[string]bool. */
-extern const char _etext[] __attribute__ ((weak));
-extern const char _edata[] __attribute__ ((weak));
-#ifdef _AIX
-// Following symbols do not exist on AIX
-const char *__etext = NULL;
-const char *__data_start = NULL;
-const char *__edata = NULL;
-const char *__bss_start = NULL;
-#else
-extern const char __etext[] __attribute__ ((weak));
-extern const char __data_start[] __attribute__ ((weak));
-extern const char __edata[] __attribute__ ((weak));
-extern const char __bss_start[] __attribute__ ((weak));
-#endif
-
extern void *mapassign (const struct maptype *, void *hmap, const void *key)
__asm__ (GOSYM_PREFIX "runtime.mapassign");
Index: libgo/runtime/panic.c
===================================================================
--- libgo/runtime/panic.c (revision 275396)
+++ libgo/runtime/panic.c (working copy)
@@ -16,23 +16,34 @@ runtime_throw(const char *s)
void
runtime_panicstring(const char *s)
{
- M* mp;
+ G *gp;
Eface err;
- mp = runtime_m();
- if (mp != nil) {
- if(mp->mallocing) {
- runtime_printf("panic: %s\n", s);
- runtime_throw("panic during malloc");
- }
- if(mp->gcing) {
- runtime_printf("panic: %s\n", s);
- runtime_throw("panic during gc");
- }
- if(mp->locks) {
- runtime_printf("panic: %s\n", s);
- runtime_throw("panic holding locks");
- }
+ gp = runtime_g();
+ if (gp == nil) {
+ runtime_printf("panic: %s\n", s);
+ runtime_throw("panic with no g");
+ }
+ if (gp->m == nil) {
+ runtime_printf("panic: %s\n", s);
+ runtime_throw("panic with no m");
+ }
+ if (gp->m->curg != gp) {
+ runtime_printf("panic: %s\n", s);
+ runtime_throw("panic on system stack");
+ }
+ if (gp->m->mallocing != 0) {
+ runtime_printf("panic: %s\n", s);
+ runtime_throw("panic during malloc");
+ }
+ if (gp->m->preemptoff.len != 0) {
+ runtime_printf("panic: %s\n", s);
+ runtime_printf("preempt off reason: %S\n", gp->m->preemptoff);
+ runtime_throw("panic during preemptoff");
+ }
+ if (gp->m->locks != 0) {
+ runtime_printf("panic: %s\n", s);
+ runtime_throw("panic holding locks");
}
runtime_newErrorCString((uintptr) s, &err);
runtime_panic(err);
Index: libgo/runtime/runtime.h
===================================================================
--- libgo/runtime/runtime.h (revision 275396)
+++ libgo/runtime/runtime.h (working copy)
@@ -502,3 +502,19 @@ void __go_makecontext(__go_context_t*, v
#define __go_makecontext(c, fn, sp, size) \
((c)->uc_stack.ss_sp = sp, (c)->uc_stack.ss_size = size, makecontext(c, fn, 0))
#endif
+
+// Symbols defined by the linker.
+extern const char _etext[] __attribute__ ((weak));
+extern const char _edata[] __attribute__ ((weak));
+#ifdef _AIX
+// Following symbols do not exist on AIX
+#define __etext nil
+#define __data_start nil
+#define __edata nil
+#define __bss_start nil
+#else
+extern const char __etext[] __attribute__ ((weak));
+extern const char __data_start[] __attribute__ ((weak));
+extern const char __edata[] __attribute__ ((weak));
+extern const char __bss_start[] __attribute__ ((weak));
+#endif
Index: libgo/runtime/runtime_c.c
===================================================================
--- libgo/runtime/runtime_c.c (revision 275396)
+++ libgo/runtime/runtime_c.c (working copy)
@@ -186,6 +186,38 @@ getEnd()
return end;
}
+// Return an address that is before the read-only data section.
+// Unfortunately there is no standard symbol for this so we use a text
+// address.
+
+uintptr getText(void)
+ __asm__ (GOSYM_PREFIX "runtime.getText");
+
+uintptr
+getText(void)
+{
+ return (uintptr)(const void *)(getText);
+}
+
+// Return the end of the text segment, assumed to come after the
+// read-only data section.
+
+uintptr getEtext(void)
+ __asm__ (GOSYM_PREFIX "runtime.getEtext");
+
+uintptr
+getEtext(void)
+{
+ const void *p;
+
+ p = __data_start;
+ if (p == nil)
+ p = __etext;
+ if (p == nil)
+ p = _etext;
+ return (uintptr)(p);
+}
+
// CPU-specific initialization.
// Fetch CPUID info on x86.
Index: libgo/testsuite/gotest
===================================================================
--- libgo/testsuite/gotest (revision 275396)
+++ libgo/testsuite/gotest (working copy)
@@ -326,7 +326,7 @@ x)
esac
if test x$tag1 != xnonmatchingtag -a x$tag2 != xnonmatchingtag; then
- tags=`sed '/^package /q' < $f | grep '^// +build '`
+ tags=`sed '/^package /q' < $f | grep '^// \?+build '`
omatch=true
first=true
match=false
@@ -334,7 +334,7 @@ x)
case $tag in
"//")
;;
- "+build")
+ "+build" | "//+build")
if test "$first" = "true"; then
first=false
elif test "$match" = "false"; then
Index: gotools/Makefile.am
===================================================================
--- gotools/Makefile.am (revision 275396)
+++ gotools/Makefile.am (working copy)
@@ -248,7 +248,7 @@ check-runtime: go$(EXEEXT) $(noinst_PROG
$(SHELL) $(libgosrcdir)/../testsuite/gotest --goarch=$${GOARCH} --goos=$${GOOS} --basedir=$(libgosrcdir)/.. --srcdir=$(libgosrcdir)/runtime --pkgpath=runtime --pkgfiles="$${files}" $(GOTESTFLAGS) -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v >> runtime-testlog 2>&1 || echo "--- $${fl}: go test runtime (0.00s)" >> runtime-testlog
grep '^--- ' runtime-testlog | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' | sort -k 2
-# check-cgo-test runs `go test misc/cgo/test` in our environment.
+# check-cgo-test runs `go test` in misc/cgo/test.
check-cgo-test: go$(EXEEXT) $(noinst_PROGRAMS) check-head check-gccgo check-gcc
rm -rf cgo-test-dir cgo-testlog
$(MKDIR_P) cgo-test-dir/misc/cgo
@@ -261,18 +261,18 @@ check-cgo-test: go$(EXEEXT) $(noinst_PRO
(cd cgo-test-dir/misc/cgo/test && $(abs_builddir)/go$(EXEEXT) test -test.short -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v) >> cgo-testlog 2>&1 || echo "--- $${fl}: go test misc/cgo/test (0.00s)" >> cgo-testlog
grep '^--- ' cgo-testlog | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' | sort -k 2
-# check-carchive-test runs `go test misc/cgo/testcarchive/carchive_test.go`
+# check-carchive-test runs `go test` in misc/cgo/testcarchive.
# in our environment.
check-carchive-test: go$(EXEEXT) $(noinst_PROGRAMS) check-head check-gccgo check-gcc
rm -rf carchive-test-dir carchive-testlog
$(MKDIR_P) carchive-test-dir/misc/cgo
cp -r $(libgomiscdir)/cgo/testcarchive carchive-test-dir/misc/cgo/
@abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \
- echo "cd carchive-test-dir/misc/cgo/testcarchive && $(ECHO_ENV) LIBRARY_PATH=`echo $${abs_libgodir}/.libs` $(abs_builddir)/go$(EXEEXT) test -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v carchive_test.go" > carchive-testlog
+ echo "cd carchive-test-dir/misc/cgo/testcarchive && $(ECHO_ENV) LIBRARY_PATH=`echo $${abs_libgodir}/.libs` $(abs_builddir)/go$(EXEEXT) test -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v" > carchive-testlog
$(CHECK_ENV) \
LIBRARY_PATH=`echo $${abs_libgodir}/.libs:$${LIBRARY_PATH} | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; \
export LIBRARY_PATH; \
- (cd carchive-test-dir/misc/cgo/testcarchive && $(abs_builddir)/go$(EXEEXT) test -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v carchive_test.go) >> carchive-testlog 2>&1 || echo "--- $${fl}: go test misc/cgo/testcarchive (0.00s)" >> carchive-testlog
+ (cd carchive-test-dir/misc/cgo/testcarchive && $(abs_builddir)/go$(EXEEXT) test -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v) >> carchive-testlog 2>&1 || echo "--- $${fl}: go test misc/cgo/testcarchive (0.00s)" >> carchive-testlog
grep '^--- ' carchive-testlog | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' | sort -k 2
# check-vet runs `go test cmd/vet` in our environment.
Index: gcc/testsuite/go.test/test/fixedbugs/bug369.go
===================================================================
--- gcc/testsuite/go.test/test/fixedbugs/bug369.go (revision 275396)
+++ gcc/testsuite/go.test/test/fixedbugs/bug369.go (working copy)
@@ -38,6 +38,7 @@ func BenchmarkSlowNonASCII(b *testing.B)
}
func main() {
+ testing.Init()
os.Args = []string{os.Args[0], "-test.benchtime=100ms"}
flag.Parse()
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: libgo: Update to Go 1.13beta1 release
2019-09-06 18:29 libgo: Update to Go 1.13beta1 release Ian Lance Taylor
@ 2019-09-07 12:03 ` Andreas Schwab
2019-09-09 23:13 ` Ian Lance Taylor
2019-09-09 8:26 ` Rainer Orth
` (2 subsequent siblings)
3 siblings, 1 reply; 11+ messages in thread
From: Andreas Schwab @ 2019-09-07 12:03 UTC (permalink / raw)
To: Ian Lance Taylor; +Cc: gcc-patches, gofrontend-dev
This has dropped support for riscv64:
diff --git a/libgo/misc/cgo/testcshared/src/libgo2/dup2.go b/libgo/misc/cgo/testcshared/src/libgo2/dup2.go
deleted file mode 100644
index d343aa54d9a..00000000000
--- a/libgo/misc/cgo/testcshared/src/libgo2/dup2.go
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2015 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 darwin dragonfly freebsd linux,!arm64,!riscv64 netbsd openbsd
-
-package main
-
-import "syscall"
-
-func dup2(oldfd, newfd int) error {
- return syscall.Dup2(oldfd, newfd)
-}
diff --git a/libgo/misc/cgo/testcshared/src/libgo2/dup3.go b/libgo/misc/cgo/testcshared/src/libgo2/dup3.go
deleted file mode 100644
index 459f0dc1968..00000000000
--- a/libgo/misc/cgo/testcshared/src/libgo2/dup3.go
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2015 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 linux,arm64 linux,riscv64
-
-package main
-
-import "syscall"
-
-func dup2(oldfd, newfd int) error {
- return syscall.Dup3(oldfd, newfd, 0)
-}
diff --git a/libgo/misc/cgo/testcshared/testdata/libgo2/dup2.go b/libgo/misc/cgo/testcshared/testdata/libgo2/dup2.go
new file mode 100644
index 00000000000..d18f0b130d3
--- /dev/null
+++ b/libgo/misc/cgo/testcshared/testdata/libgo2/dup2.go
@@ -0,0 +1,13 @@
+// Copyright 2015 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 darwin dragonfly freebsd linux,!arm64 netbsd openbsd
+
+package main
+
+import "syscall"
+
+func dup2(oldfd, newfd int) error {
+ return syscall.Dup2(oldfd, newfd)
+}
diff --git a/libgo/misc/cgo/testcshared/testdata/libgo2/dup3.go b/libgo/misc/cgo/testcshared/testdata/libgo2/dup3.go
new file mode 100644
index 00000000000..c9c65a6e3c1
--- /dev/null
+++ b/libgo/misc/cgo/testcshared/testdata/libgo2/dup3.go
@@ -0,0 +1,13 @@
+// Copyright 2015 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 linux,arm64
+
+package main
+
+import "syscall"
+
+func dup2(oldfd, newfd int) error {
+ return syscall.Dup3(oldfd, newfd, 0)
+}
Andreas.
--
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1
"And now for something completely different."
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: libgo: Update to Go 1.13beta1 release
2019-09-06 18:29 libgo: Update to Go 1.13beta1 release Ian Lance Taylor
2019-09-07 12:03 ` Andreas Schwab
@ 2019-09-09 8:26 ` Rainer Orth
2019-09-10 20:41 ` Ian Lance Taylor
2019-10-14 9:09 ` [PATCH 1/2] Sync hardware facility names with other files in os_linux_s390x.go Andreas Krebbel
2019-10-14 9:52 ` [PATCH 2/2] GO S/390: Add kdsaQuery function Andreas Krebbel
3 siblings, 1 reply; 11+ messages in thread
From: Rainer Orth @ 2019-09-09 8:26 UTC (permalink / raw)
To: Ian Lance Taylor; +Cc: gcc-patches, gofrontend-dev
[-- Attachment #1: Type: text/plain, Size: 2880 bytes --]
Hi Ian,
> I've committed a patch to update libgo to the Go 1.13beta1 release.
> As is usual with these updates, the patch is too large to include
> here; I've included the diffs of the various GCC-specific configury
> and other files. Bootstrapped and ran Go testsuite on
> x86_64-pc-linux-gnu. Committed to mainline.
this patch caused quite some fallout on Solaris, both SPARC and x86:
* The golang.org/x/net/lif package won't build:
make[4]: *** No rule to make target 'golang.org/x/net/lif.gox', needed by 'net.lo'. Stop.
It moved from go/internal/x/net/lif/lif.go to
go/golang.org/x/net/lif/lif.go, but neither was Makefile.am adapted to
reflect this nor the Solaris fixes in the old version carried over to
the new location.
* go/runtime/os_solaris.go doesn't compile:
/vol/gcc/src/hg/trunk/local/libgo/go/runtime/os_solaris.go:34:7: error: reference to undefined field or method ‘mos’
34 | if mp.mos.waitsema != 0 {
| ^
and several more instances. Caused by losing the explict mos member
of m in go/runtime/runtime2.go, fixed by dropping it here, to.
* As Bernd mentioned, go/golang.org/x/sys/cpu/cpu_gccgo.{c, go} don't
compile on non-x86 systems due to lack of <cpuid.h>. Fixed by
restricting to 386 or amd64 and wrapping the C code in __i386__ ||
__x86_64__.
* The go/golang.org/x/sys/cpu package doesn't compile on SPARC:
/vol/gcc/src/hg/trunk/local/libgo/go/golang.org/x/sys/cpu/cpu.go:17:30: error: reference to undefined name 'cacheLineSize'
17 | type CacheLinePad struct{ _ [cacheLineSize]byte }
| ^
make[8]: *** [Makefile:2826: golang.org/x/sys/cpu.lo] Error 1
For the moment, I've worked around this by introducing cpu_sparcx.go
with appropriate build tags. However, I'm uncertain what do do about
the actual value of cacheLineSize: the L1 D$ size is 16 on
UltraSPARC-T2, but 32 on SPARC-S7.
With the attached patch, I can now bootstrap mainline on both
i386-pc-solaris2.11 and sparc-sun-solaris2.11. Test results are similar
to pre-1.13, but I'll have to check further. One thing that's new on
both sparc and x86 is an ICE compiling internal/poll:
go1: internal compiler error: in bind_field_or_method, at go/gofrontend/types.cc:11878
0x56d3df Type::bind_field_or_method(Gogo*, Type const*, Expression*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Location)
/vol/gcc/src/hg/trunk/local/gcc/go/gofrontend/types.cc:11878
0x4d2dcf Selector_expression::do_lower(Gogo*, Named_object*, Statement_inserter*, int)
/vol/gcc/src/hg/trunk/local/gcc/go/gofrontend/expressions.cc:14403
[...]
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: sol2-libgo113beta1-compile.patch --]
[-- Type: text/x-patch, Size: 13225 bytes --]
# HG changeset patch
# Parent cc2b98a3fc293d157b70a090c69a78d264801762
Fix libgo 1.13beta1 compilation on Solaris
diff --git a/libgo/Makefile.am b/libgo/Makefile.am
--- a/libgo/Makefile.am
+++ b/libgo/Makefile.am
@@ -1055,9 +1055,9 @@ endif
if LIBGO_IS_SOLARIS
-# Build internal/x/net/lif only on Solaris systems.
+# Build golang.org/x/net/lif only on Solaris systems.
-$(eval $(call PACKAGE_template,internal/x/net/lif))
+$(eval $(call PACKAGE_template,golang.org/x/net/lif))
golangorg_x_net_lif_lo = \
golang.org/x/net/lif.lo
diff --git a/libgo/go/golang.org/x/net/lif/address_test.go b/libgo/go/golang.org/x/net/lif/address_test.go
new file mode 100644
--- /dev/null
+++ b/libgo/go/golang.org/x/net/lif/address_test.go
@@ -0,0 +1,123 @@
+// Copyright 2016 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 solaris
+
+package lif
+
+import (
+ "fmt"
+ "testing"
+)
+
+type addrFamily int
+
+func (af addrFamily) String() string {
+ switch af {
+ case sysAF_UNSPEC:
+ return "unspec"
+ case sysAF_INET:
+ return "inet4"
+ case sysAF_INET6:
+ return "inet6"
+ default:
+ return fmt.Sprintf("%d", af)
+ }
+}
+
+const hexDigit = "0123456789abcdef"
+
+type llAddr []byte
+
+func (a llAddr) String() string {
+ if len(a) == 0 {
+ return ""
+ }
+ buf := make([]byte, 0, len(a)*3-1)
+ for i, b := range a {
+ if i > 0 {
+ buf = append(buf, ':')
+ }
+ buf = append(buf, hexDigit[b>>4])
+ buf = append(buf, hexDigit[b&0xF])
+ }
+ return string(buf)
+}
+
+type ipAddr []byte
+
+func (a ipAddr) String() string {
+ if len(a) == 0 {
+ return "<nil>"
+ }
+ if len(a) == 4 {
+ return fmt.Sprintf("%d.%d.%d.%d", a[0], a[1], a[2], a[3])
+ }
+ if len(a) == 16 {
+ return fmt.Sprintf("%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15])
+ }
+ s := make([]byte, len(a)*2)
+ for i, tn := range a {
+ s[i*2], s[i*2+1] = hexDigit[tn>>4], hexDigit[tn&0xf]
+ }
+ return string(s)
+}
+
+func (a *Inet4Addr) String() string {
+ return fmt.Sprintf("(%s %s %d)", addrFamily(a.Family()), ipAddr(a.IP[:]), a.PrefixLen)
+}
+
+func (a *Inet6Addr) String() string {
+ return fmt.Sprintf("(%s %s %d %d)", addrFamily(a.Family()), ipAddr(a.IP[:]), a.PrefixLen, a.ZoneID)
+}
+
+type addrPack struct {
+ af int
+ as []Addr
+}
+
+func addrPacks() ([]addrPack, error) {
+ var lastErr error
+ var aps []addrPack
+ for _, af := range [...]int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} {
+ as, err := Addrs(af, "")
+ if err != nil {
+ lastErr = err
+ continue
+ }
+ aps = append(aps, addrPack{af: af, as: as})
+ }
+ return aps, lastErr
+}
+
+func TestAddrs(t *testing.T) {
+ aps, err := addrPacks()
+ if len(aps) == 0 && err != nil {
+ t.Fatal(err)
+ }
+ lps, err := linkPacks()
+ if len(lps) == 0 && err != nil {
+ t.Fatal(err)
+ }
+ for _, lp := range lps {
+ n := 0
+ for _, ll := range lp.lls {
+ as, err := Addrs(lp.af, ll.Name)
+ if err != nil {
+ t.Fatal(lp.af, ll.Name, err)
+ }
+ t.Logf("af=%s name=%s %v", addrFamily(lp.af), ll.Name, as)
+ n += len(as)
+ }
+ for _, ap := range aps {
+ if ap.af != lp.af {
+ continue
+ }
+ if n != len(ap.as) {
+ t.Errorf("af=%s got %d; want %d", addrFamily(lp.af), n, len(ap.as))
+ continue
+ }
+ }
+ }
+}
diff --git a/libgo/go/golang.org/x/net/lif/link_test.go b/libgo/go/golang.org/x/net/lif/link_test.go
new file mode 100644
--- /dev/null
+++ b/libgo/go/golang.org/x/net/lif/link_test.go
@@ -0,0 +1,63 @@
+// Copyright 2016 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 solaris
+
+package lif
+
+import (
+ "fmt"
+ "testing"
+)
+
+func (ll *Link) String() string {
+ return fmt.Sprintf("name=%s index=%d type=%d flags=%#x mtu=%d addr=%v", ll.Name, ll.Index, ll.Type, ll.Flags, ll.MTU, llAddr(ll.Addr))
+}
+
+type linkPack struct {
+ af int
+ lls []Link
+}
+
+func linkPacks() ([]linkPack, error) {
+ var lastErr error
+ var lps []linkPack
+ for _, af := range [...]int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} {
+ lls, err := Links(af, "")
+ if err != nil {
+ lastErr = err
+ continue
+ }
+ lps = append(lps, linkPack{af: af, lls: lls})
+ }
+ return lps, lastErr
+}
+
+func TestLinks(t *testing.T) {
+ lps, err := linkPacks()
+ if len(lps) == 0 && err != nil {
+ t.Fatal(err)
+ }
+ for _, lp := range lps {
+ n := 0
+ for _, sll := range lp.lls {
+ lls, err := Links(lp.af, sll.Name)
+ if err != nil {
+ t.Fatal(lp.af, sll.Name, err)
+ }
+ for _, ll := range lls {
+ if ll.Name != sll.Name || ll.Index != sll.Index {
+ t.Errorf("af=%s got %v; want %v", addrFamily(lp.af), &ll, &sll)
+ continue
+ }
+ t.Logf("af=%s name=%s %v", addrFamily(lp.af), sll.Name, &ll)
+ n++
+ }
+ }
+ if n != len(lp.lls) {
+ t.Errorf("af=%s got %d; want %d", addrFamily(lp.af), n, len(lp.lls))
+ continue
+ }
+ }
+}
diff --git a/libgo/go/golang.org/x/net/lif/syscall.go b/libgo/go/golang.org/x/net/lif/syscall.go
--- a/libgo/go/golang.org/x/net/lif/syscall.go
+++ b/libgo/go/golang.org/x/net/lif/syscall.go
@@ -11,18 +11,12 @@ import (
"unsafe"
)
-//go:cgo_import_dynamic libc_ioctl ioctl "libc.so"
-
-//go:linkname procIoctl libc_ioctl
-
-var procIoctl uintptr
-
-func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (uintptr, uintptr, syscall.Errno)
+//extern __go_ioctl_ptr
+func libc_ioctl(int32, int32, unsafe.Pointer) int32
func ioctl(s, ioc uintptr, arg unsafe.Pointer) error {
- _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procIoctl)), 3, s, ioc, uintptr(arg), 0, 0, 0)
- if errno != 0 {
- return error(errno)
+ if libc_ioctl(int32(s), int32(ioc), arg) < 0 {
+ return syscall.GetErrno()
}
return nil
}
diff --git a/libgo/go/golang.org/x/net/lif/zsys_solaris.go b/libgo/go/golang.org/x/net/lif/zsys_solaris.go
new file mode 100644
--- /dev/null
+++ b/libgo/go/golang.org/x/net/lif/zsys_solaris.go
@@ -0,0 +1,101 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_solaris.go
+
+package lif
+
+import "unsafe"
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0x1a
+
+ sysSOCK_DGRAM = 0x1
+)
+
+type sockaddrStorage struct {
+ Family uint16
+ X_ss_pad1 [6]int8
+ X_ss_align float64
+ X_ss_pad2 [240]int8
+}
+
+const (
+ sysLIFC_NOXMIT = 0x1
+ sysLIFC_EXTERNAL_SOURCE = 0x2
+ sysLIFC_TEMPORARY = 0x4
+ sysLIFC_ALLZONES = 0x8
+ sysLIFC_UNDER_IPMP = 0x10
+ sysLIFC_ENABLED = 0x20
+
+ sysSIOCGLIFADDR = -0x3f87968f
+ sysSIOCGLIFDSTADDR = -0x3f87968d
+ sysSIOCGLIFFLAGS = -0x3f87968b
+ sysSIOCGLIFMTU = -0x3f879686
+ sysSIOCGLIFNETMASK = -0x3f879683
+ sysSIOCGLIFMETRIC = -0x3f879681
+ sysSIOCGLIFNUM = -0x3ff3967e
+ sysSIOCGLIFINDEX = -0x3f87967b
+ sysSIOCGLIFSUBNET = -0x3f879676
+ sysSIOCGLIFLNKINFO = -0x3f879674
+ sysSIOCGLIFCONF = -0x3fef965b
+ sysSIOCGLIFHWADDR = -0x3f879640
+)
+
+const (
+ sysIFF_UP = 0x1
+ sysIFF_BROADCAST = 0x2
+ sysIFF_DEBUG = 0x4
+ sysIFF_LOOPBACK = 0x8
+ sysIFF_POINTOPOINT = 0x10
+ sysIFF_NOTRAILERS = 0x20
+ sysIFF_RUNNING = 0x40
+ sysIFF_NOARP = 0x80
+ sysIFF_PROMISC = 0x100
+ sysIFF_ALLMULTI = 0x200
+ sysIFF_INTELLIGENT = 0x400
+ sysIFF_MULTICAST = 0x800
+ sysIFF_MULTI_BCAST = 0x1000
+ sysIFF_UNNUMBERED = 0x2000
+ sysIFF_PRIVATE = 0x8000
+)
+
+const (
+ sizeofLifnum = 0xc
+ sizeofLifreq = 0x178
+ sizeofLifconf = 0x18
+ sizeofLifIfinfoReq = 0x10
+)
+
+type lifnum struct {
+ Family uint16
+ Flags int32
+ Count int32
+}
+
+type lifreq struct {
+ Name [32]int8
+ Lifru1 [4]byte
+ Type uint32
+ Lifru [336]byte
+}
+
+type lifconf struct {
+ Family uint16
+ Flags int32
+ Len int32
+ Lifcu [unsafe.Sizeof(unsafe.Pointer(nil))]byte
+}
+
+type lifIfinfoReq struct {
+ Maxhops uint8
+ Reachtime uint32
+ Reachretrans uint32
+ Maxmtu uint32
+}
+
+const (
+ sysIFT_IPV4 = 0xc8
+ sysIFT_IPV6 = 0xc9
+ sysIFT_6TO4 = 0xca
+)
diff --git a/libgo/go/golang.org/x/net/lif/zsys_solaris_amd64.go b/libgo/go/golang.org/x/net/lif/zsys_solaris_amd64.go
deleted file mode 100644
--- a/libgo/go/golang.org/x/net/lif/zsys_solaris_amd64.go
+++ /dev/null
@@ -1,103 +0,0 @@
-// Created by cgo -godefs - DO NOT EDIT
-// cgo -godefs defs_solaris.go
-
-package lif
-
-const (
- sysAF_UNSPEC = 0x0
- sysAF_INET = 0x2
- sysAF_INET6 = 0x1a
-
- sysSOCK_DGRAM = 0x1
-)
-
-type sockaddrStorage struct {
- Family uint16
- X_ss_pad1 [6]int8
- X_ss_align float64
- X_ss_pad2 [240]int8
-}
-
-const (
- sysLIFC_NOXMIT = 0x1
- sysLIFC_EXTERNAL_SOURCE = 0x2
- sysLIFC_TEMPORARY = 0x4
- sysLIFC_ALLZONES = 0x8
- sysLIFC_UNDER_IPMP = 0x10
- sysLIFC_ENABLED = 0x20
-
- sysSIOCGLIFADDR = -0x3f87968f
- sysSIOCGLIFDSTADDR = -0x3f87968d
- sysSIOCGLIFFLAGS = -0x3f87968b
- sysSIOCGLIFMTU = -0x3f879686
- sysSIOCGLIFNETMASK = -0x3f879683
- sysSIOCGLIFMETRIC = -0x3f879681
- sysSIOCGLIFNUM = -0x3ff3967e
- sysSIOCGLIFINDEX = -0x3f87967b
- sysSIOCGLIFSUBNET = -0x3f879676
- sysSIOCGLIFLNKINFO = -0x3f879674
- sysSIOCGLIFCONF = -0x3fef965b
- sysSIOCGLIFHWADDR = -0x3f879640
-)
-
-const (
- sysIFF_UP = 0x1
- sysIFF_BROADCAST = 0x2
- sysIFF_DEBUG = 0x4
- sysIFF_LOOPBACK = 0x8
- sysIFF_POINTOPOINT = 0x10
- sysIFF_NOTRAILERS = 0x20
- sysIFF_RUNNING = 0x40
- sysIFF_NOARP = 0x80
- sysIFF_PROMISC = 0x100
- sysIFF_ALLMULTI = 0x200
- sysIFF_INTELLIGENT = 0x400
- sysIFF_MULTICAST = 0x800
- sysIFF_MULTI_BCAST = 0x1000
- sysIFF_UNNUMBERED = 0x2000
- sysIFF_PRIVATE = 0x8000
-)
-
-const (
- sizeofLifnum = 0xc
- sizeofLifreq = 0x178
- sizeofLifconf = 0x18
- sizeofLifIfinfoReq = 0x10
-)
-
-type lifnum struct {
- Family uint16
- Pad_cgo_0 [2]byte
- Flags int32
- Count int32
-}
-
-type lifreq struct {
- Name [32]int8
- Lifru1 [4]byte
- Type uint32
- Lifru [336]byte
-}
-
-type lifconf struct {
- Family uint16
- Pad_cgo_0 [2]byte
- Flags int32
- Len int32
- Pad_cgo_1 [4]byte
- Lifcu [8]byte
-}
-
-type lifIfinfoReq struct {
- Maxhops uint8
- Pad_cgo_0 [3]byte
- Reachtime uint32
- Reachretrans uint32
- Maxmtu uint32
-}
-
-const (
- sysIFT_IPV4 = 0xc8
- sysIFT_IPV6 = 0xc9
- sysIFT_6TO4 = 0xca
-)
diff --git a/libgo/go/golang.org/x/sys/cpu/cpu_gccgo.c b/libgo/go/golang.org/x/sys/cpu/cpu_gccgo.c
--- a/libgo/go/golang.org/x/sys/cpu/cpu_gccgo.c
+++ b/libgo/go/golang.org/x/sys/cpu/cpu_gccgo.c
@@ -3,7 +3,9 @@
// license that can be found in the LICENSE file.
// +build 386 amd64 amd64p32
-// +build gccgo
+// +build gccgo,386 gccgo,amd64
+
+#if defined(__i386__) || defined(__x86_64__)
#include <cpuid.h>
#include <stdint.h>
@@ -41,3 +43,5 @@ gccgoXgetbv(uint32_t *eax, uint32_t *edx
" xgetbv"
: "=a"(*eax), "=d"(*edx));
}
+
+#endif /* defined(__i386__) || defined(__x86_64__) */
diff --git a/libgo/go/golang.org/x/sys/cpu/cpu_gccgo.go b/libgo/go/golang.org/x/sys/cpu/cpu_gccgo.go
--- a/libgo/go/golang.org/x/sys/cpu/cpu_gccgo.go
+++ b/libgo/go/golang.org/x/sys/cpu/cpu_gccgo.go
@@ -3,7 +3,7 @@
// license that can be found in the LICENSE file.
// +build 386 amd64 amd64p32
-// +build gccgo
+// +build gccgo,386 gccgo,amd64
package cpu
diff --git a/libgo/go/golang.org/x/sys/cpu/cpu_sparcx.go b/libgo/go/golang.org/x/sys/cpu/cpu_sparcx.go
new file mode 100644
--- /dev/null
+++ b/libgo/go/golang.org/x/sys/cpu/cpu_sparcx.go
@@ -0,0 +1,12 @@
+// 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 sparc sparc64
+
+package cpu
+
+// FIXME: Check.
+const cacheLineSize = 32
+
+func doinit() {}
diff --git a/libgo/go/runtime/os_solaris.go b/libgo/go/runtime/os_solaris.go
--- a/libgo/go/runtime/os_solaris.go
+++ b/libgo/go/runtime/os_solaris.go
@@ -31,7 +31,7 @@ func sem_reltimedwait_np(sem *semt, time
//go:nosplit
func semacreate(mp *m) {
- if mp.mos.waitsema != 0 {
+ if mp.waitsema != 0 {
return
}
@@ -44,7 +44,7 @@ func semacreate(mp *m) {
if sem_init(sem, 0, 0) != 0 {
throw("sem_init")
}
- mp.mos.waitsema = uintptr(unsafe.Pointer(sem))
+ mp.waitsema = uintptr(unsafe.Pointer(sem))
}
//go:nosplit
@@ -54,7 +54,7 @@ func semasleep(ns int64) int32 {
var ts timespec
ts.setNsec(ns)
- if sem_reltimedwait_np((*semt)(unsafe.Pointer(_m_.mos.waitsema)), &ts) != 0 {
+ if sem_reltimedwait_np((*semt)(unsafe.Pointer(_m_.waitsema)), &ts) != 0 {
err := errno()
if err == _ETIMEDOUT || err == _EAGAIN || err == _EINTR {
return -1
@@ -64,7 +64,7 @@ func semasleep(ns int64) int32 {
return 0
}
for {
- r1 := sem_wait((*semt)(unsafe.Pointer(_m_.mos.waitsema)))
+ r1 := sem_wait((*semt)(unsafe.Pointer(_m_.waitsema)))
if r1 == 0 {
break
}
@@ -78,7 +78,7 @@ func semasleep(ns int64) int32 {
//go:nosplit
func semawakeup(mp *m) {
- if sem_post((*semt)(unsafe.Pointer(mp.mos.waitsema))) != 0 {
+ if sem_post((*semt)(unsafe.Pointer(mp.waitsema))) != 0 {
throw("sem_post")
}
}
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: libgo: Update to Go 1.13beta1 release
2019-09-07 12:03 ` Andreas Schwab
@ 2019-09-09 23:13 ` Ian Lance Taylor
0 siblings, 0 replies; 11+ messages in thread
From: Ian Lance Taylor @ 2019-09-09 23:13 UTC (permalink / raw)
To: Andreas Schwab; +Cc: gcc-patches, gofrontend-dev
[-- Attachment #1: Type: text/plain, Size: 313 bytes --]
On Sat, Sep 7, 2019 at 5:03 AM Andreas Schwab <schwab@linux-m68k.org> wrote:
>
> This has dropped support for riscv64:
Thanks, and sorry. The gccgo-local changes were lost when the files
moved. I restored them as follows. Bootstrapped and ran Go testsuite
on x86_64-pc-linux-gnu. Committed to mainline.
Ian
[-- Attachment #2: patch.txt --]
[-- Type: text/plain, Size: 1424 bytes --]
Index: gcc/go/gofrontend/MERGE
===================================================================
--- gcc/go/gofrontend/MERGE (revision 275544)
+++ gcc/go/gofrontend/MERGE (working copy)
@@ -1,4 +1,4 @@
-03fa49394bb4b37453795bef3119e5b40c929aee
+c6097f269d2b3dbfd5204cf7e3d0b9f8d7ec2b5e
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
Index: libgo/misc/cgo/testcshared/testdata/libgo2/dup2.go
===================================================================
--- libgo/misc/cgo/testcshared/testdata/libgo2/dup2.go (revision 275473)
+++ libgo/misc/cgo/testcshared/testdata/libgo2/dup2.go (working copy)
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build darwin dragonfly freebsd linux,!arm64 netbsd openbsd
+// +build darwin dragonfly freebsd linux,!arm64,!riscv64 netbsd openbsd
package main
Index: libgo/misc/cgo/testcshared/testdata/libgo2/dup3.go
===================================================================
--- libgo/misc/cgo/testcshared/testdata/libgo2/dup3.go (revision 275473)
+++ libgo/misc/cgo/testcshared/testdata/libgo2/dup3.go (working copy)
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build linux,arm64
+// +build linux,arm64 linux,riscv64
package main
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: libgo: Update to Go 1.13beta1 release
2019-09-09 8:26 ` Rainer Orth
@ 2019-09-10 20:41 ` Ian Lance Taylor
0 siblings, 0 replies; 11+ messages in thread
From: Ian Lance Taylor @ 2019-09-10 20:41 UTC (permalink / raw)
To: Rainer Orth; +Cc: gcc-patches, gofrontend-dev
[-- Attachment #1: Type: text/plain, Size: 2377 bytes --]
On Mon, Sep 9, 2019 at 1:26 AM Rainer Orth <ro@cebitec.uni-bielefeld.de> wrote:
>
> > I've committed a patch to update libgo to the Go 1.13beta1 release.
> > As is usual with these updates, the patch is too large to include
> > here; I've included the diffs of the various GCC-specific configury
> > and other files. Bootstrapped and ran Go testsuite on
> > x86_64-pc-linux-gnu. Committed to mainline.
>
> this patch caused quite some fallout on Solaris, both SPARC and x86:
>
> * The golang.org/x/net/lif package won't build:
>
> make[4]: *** No rule to make target 'golang.org/x/net/lif.gox', needed by 'net.lo'. Stop.
>
> It moved from go/internal/x/net/lif/lif.go to
> go/golang.org/x/net/lif/lif.go, but neither was Makefile.am adapted to
> reflect this nor the Solaris fixes in the old version carried over to
> the new location.
>
> * go/runtime/os_solaris.go doesn't compile:
>
> /vol/gcc/src/hg/trunk/local/libgo/go/runtime/os_solaris.go:34:7: error: reference to undefined field or method ‘mos’
> 34 | if mp.mos.waitsema != 0 {
> | ^
>
> and several more instances. Caused by losing the explict mos member
> of m in go/runtime/runtime2.go, fixed by dropping it here, to.
>
> * As Bernd mentioned, go/golang.org/x/sys/cpu/cpu_gccgo.{c, go} don't
> compile on non-x86 systems due to lack of <cpuid.h>. Fixed by
> restricting to 386 or amd64 and wrapping the C code in __i386__ ||
> __x86_64__.
>
> * The go/golang.org/x/sys/cpu package doesn't compile on SPARC:
>
> /vol/gcc/src/hg/trunk/local/libgo/go/golang.org/x/sys/cpu/cpu.go:17:30: error: reference to undefined name 'cacheLineSize'
> 17 | type CacheLinePad struct{ _ [cacheLineSize]byte }
> | ^
> make[8]: *** [Makefile:2826: golang.org/x/sys/cpu.lo] Error 1
>
> For the moment, I've worked around this by introducing cpu_sparcx.go
> with appropriate build tags. However, I'm uncertain what do do about
> the actual value of cacheLineSize: the L1 D$ size is 16 on
> UltraSPARC-T2, but 32 on SPARC-S7.
>
> With the attached patch, I can now bootstrap mainline on both
> i386-pc-solaris2.11 and sparc-sun-solaris2.11. Test results are similar
> to pre-1.13, but I'll have to check further.
Thanks. I've committed this patch, based on yours but somewhat different.
Ian
[-- Attachment #2: patch.txt --]
[-- Type: text/plain, Size: 21204 bytes --]
Index: gcc/go/gofrontend/MERGE
===================================================================
--- gcc/go/gofrontend/MERGE (revision 275608)
+++ gcc/go/gofrontend/MERGE (working copy)
@@ -1,4 +1,4 @@
-2f6dd921a21351e94f55a5365a3176af563b5945
+bf4832d604e7522dee78fca76de220b62a131d54
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
Index: libgo/Makefile.am
===================================================================
--- libgo/Makefile.am (revision 275594)
+++ libgo/Makefile.am (working copy)
@@ -510,6 +510,14 @@ s-cpu: Makefile
$(SHELL) $(srcdir)/mvifdiff.sh cpugen.go.tmp cpugen.go
$(STAMP) $@
+gcpugen.go: s-gcpu; @true
+s-gcpu: Makefile
+ rm -f gcpugen.go.tmp
+ echo "package cpu" > gcpugen.go.tmp
+ echo "const cacheLineSize = `$(SHELL) $(srcdir)/goarch.sh $(GOARCH) cachelinesize`" >> gcpugen.go.tmp
+ $(SHELL) $(srcdir)/mvifdiff.sh gcpugen.go.tmp gcpugen.go
+ $(STAMP) $@
+
objabi.go: s-objabi; @true
s-objabi: Makefile
rm -f objabi.go.tmp
@@ -773,7 +781,7 @@ GOLINK = $(LIBTOOL) --tag GO --mode-link
BUILDDEPS = \
$(MKDIR_P) $(@D); \
dir=`echo $@ | sed -e 's/.lo.dep$$//'`; \
- files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$$dir --extrafiles="$(extra_go_files_$(subst /,_,$(subst .lo.dep,,$@)))" $(matchargs_$(subst /,_,$(subst .lo.dep,,$@)))`; \
+ files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$$dir --extrafiles="$(extra_go_files_$(subst .,_,$(subst /,_,$(subst .lo.dep,,$@))))" $(matchargs_$(subst /,_,$(subst .lo.dep,,$@)))`; \
$(SHELL) $(srcdir)/godeps.sh `echo $@ | sed -e 's/.dep$$//'` $$files > $@.tmp; \
if ! cmp $@.tmp $@ >/dev/null 2>/dev/null; then \
rm -f `echo $@ | sed -e 's/\.dep$$//'`; \
@@ -804,7 +812,7 @@ GOBENCH =
CHECK = \
GC="$(GOC) $(GOCFLAGS) $($(subst /,_,$@)_GOCFLAGS) -L `${PWD_COMMAND}` -L `${PWD_COMMAND}`/.libs"; \
export GC; \
- GOLIBS="$(extra_check_libs_$(subst /,_,$(@D))) $(MATH_LIBS) $(NET_LIBS) $(LIBS)"; \
+ GOLIBS="$(extra_check_libs_$(subst .,_,$(subst /,_,$(@D)))) $(MATH_LIBS) $(NET_LIBS) $(LIBS)"; \
export GOLIBS; \
RUNTESTFLAGS="$(RUNTESTFLAGS)"; \
export RUNTESTFLAGS; \
@@ -818,7 +826,7 @@ CHECK = \
export LD_LIBRARY_PATH; \
$(MKDIR_P) $(@D); \
rm -f $@-testsum $@-testlog; \
- files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$(@D) --extrafiles="$(extra_go_files_$(subst /,_,$(@D)))" $(matchargs_$(subst /,_,$(@D)))`; \
+ files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$(@D) --extrafiles="$(extra_go_files_$(subst .,_,$(subst /,_,$(@D))))" $(matchargs_$(subst /,_,$(@D)))`; \
if test "$(USE_DEJAGNU)" = "yes"; then \
$(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --testname="$(@D)" $(GOTESTFLAGS); \
elif test "$(GOBENCH)" != ""; then \
@@ -951,6 +959,9 @@ runtime/internal/sys.lo.dep: $(extra_go_
extra_go_files_internal_cpu = cpugen.go
internal/cpu.lo.dep: $(extra_go_files_internal_cpu)
+extra_go_files_golang_org_x_sys_cpu = gcpugen.go
+golang.org/x/sys/cpu.lo.dep: $(extra_go_files_golang_org_x_sys_cpu)
+
extra_go_files_internal_goroot = zstdpkglist.go
internal/goroot.lo.dep: $(extra_go_files_internal_goroot)
@@ -1047,34 +1058,27 @@ endif
if LIBGO_IS_BSD
-# Build internal/x/net/route only on BSD systems.
+# Build golang.org/x/net/route only on BSD systems.
-$(eval $(call PACKAGE_template,internal/x/net/route))
+$(eval $(call PACKAGE_template,golang.org/x/net/route))
golangorg_x_net_route_lo = \
golang.org/net/route.lo
-golangorg_x_net_route_check = \
- golang.org/x/net/route/check
endif
if LIBGO_IS_SOLARIS
-# Build internal/x/net/lif only on Solaris systems.
+# Build golang.org/x/net/lif only on Solaris systems.
-$(eval $(call PACKAGE_template,internal/x/net/lif))
+$(eval $(call PACKAGE_template,golang.org/x/net/lif))
golangorg_x_net_lif_lo = \
golang.org/x/net/lif.lo
-golangorg_x_net_lif_check = \
- golang.org/x/net/lif/check
endif
-TPACKAGES = $(shell cat $(srcdir)/check-packages.txt)
-TEST_PACKAGES = $(addsuffix /check,$(TPACKAGES)) \
- $(golangorg_x_net_lif_check) \
- $(golangorg_x_net_route_check)
+TEST_PACKAGES = $(addsuffix /check,$(shell cat $(srcdir)/check-packages.txt))
check: check-tail
check-recursive: check-head
Index: libgo/Makefile.in
===================================================================
--- libgo/Makefile.in (revision 275594)
+++ libgo/Makefile.in (working copy)
@@ -973,7 +973,7 @@ GOLINK = $(LIBTOOL) --tag GO --mode-link
BUILDDEPS = \
$(MKDIR_P) $(@D); \
dir=`echo $@ | sed -e 's/.lo.dep$$//'`; \
- files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$$dir --extrafiles="$(extra_go_files_$(subst /,_,$(subst .lo.dep,,$@)))" $(matchargs_$(subst /,_,$(subst .lo.dep,,$@)))`; \
+ files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$$dir --extrafiles="$(extra_go_files_$(subst .,_,$(subst /,_,$(subst .lo.dep,,$@))))" $(matchargs_$(subst /,_,$(subst .lo.dep,,$@)))`; \
$(SHELL) $(srcdir)/godeps.sh `echo $@ | sed -e 's/.dep$$//'` $$files > $@.tmp; \
if ! cmp $@.tmp $@ >/dev/null 2>/dev/null; then \
rm -f `echo $@ | sed -e 's/\.dep$$//'`; \
@@ -1006,7 +1006,7 @@ GOBENCH =
CHECK = \
GC="$(GOC) $(GOCFLAGS) $($(subst /,_,$@)_GOCFLAGS) -L `${PWD_COMMAND}` -L `${PWD_COMMAND}`/.libs"; \
export GC; \
- GOLIBS="$(extra_check_libs_$(subst /,_,$(@D))) $(MATH_LIBS) $(NET_LIBS) $(LIBS)"; \
+ GOLIBS="$(extra_check_libs_$(subst .,_,$(subst /,_,$(@D)))) $(MATH_LIBS) $(NET_LIBS) $(LIBS)"; \
export GOLIBS; \
RUNTESTFLAGS="$(RUNTESTFLAGS)"; \
export RUNTESTFLAGS; \
@@ -1020,7 +1020,7 @@ CHECK = \
export LD_LIBRARY_PATH; \
$(MKDIR_P) $(@D); \
rm -f $@-testsum $@-testlog; \
- files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$(@D) --extrafiles="$(extra_go_files_$(subst /,_,$(@D)))" $(matchargs_$(subst /,_,$(@D)))`; \
+ files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$(@D) --extrafiles="$(extra_go_files_$(subst .,_,$(subst /,_,$(@D))))" $(matchargs_$(subst /,_,$(@D)))`; \
if test "$(USE_DEJAGNU)" = "yes"; then \
$(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --testname="$(@D)" $(GOTESTFLAGS); \
elif test "$(GOBENCH)" != ""; then \
@@ -1091,6 +1091,7 @@ runtime_internal_sys_lo_check_GOCFLAGS =
runtime_pprof_check_GOCFLAGS = -static-libgo -fno-inline
extra_go_files_runtime_internal_sys = version.go
extra_go_files_internal_cpu = cpugen.go
+extra_go_files_golang_org_x_sys_cpu = gcpugen.go
extra_go_files_internal_goroot = zstdpkglist.go
extra_go_files_go_types = gccgosizes.go
extra_go_files_cmd_internal_objabi = objabi.go
@@ -1121,20 +1122,10 @@ extra_check_libs_cmd_vet_internal_cfg =
@LIBGO_IS_BSD_TRUE@golangorg_x_net_route_lo = \
@LIBGO_IS_BSD_TRUE@ golang.org/net/route.lo
-@LIBGO_IS_BSD_TRUE@golangorg_x_net_route_check = \
-@LIBGO_IS_BSD_TRUE@ golang.org/x/net/route/check
-
@LIBGO_IS_SOLARIS_TRUE@golangorg_x_net_lif_lo = \
@LIBGO_IS_SOLARIS_TRUE@ golang.org/x/net/lif.lo
-@LIBGO_IS_SOLARIS_TRUE@golangorg_x_net_lif_check = \
-@LIBGO_IS_SOLARIS_TRUE@ golang.org/x/net/lif/check
-
-TPACKAGES = $(shell cat $(srcdir)/check-packages.txt)
-TEST_PACKAGES = $(addsuffix /check,$(TPACKAGES)) \
- $(golangorg_x_net_lif_check) \
- $(golangorg_x_net_route_check)
-
+TEST_PACKAGES = $(addsuffix /check,$(shell cat $(srcdir)/check-packages.txt))
MOSTLYCLEANFILES = \
s-runtime_sysinfo s-sigtab s-runtime-inc s-zstdpkglist \
s-libcalls s-libcalls-list s-syscall_arch s-gen-sysinfo s-sysinfo \
@@ -2629,6 +2620,14 @@ s-cpu: Makefile
$(SHELL) $(srcdir)/mvifdiff.sh cpugen.go.tmp cpugen.go
$(STAMP) $@
+gcpugen.go: s-gcpu; @true
+s-gcpu: Makefile
+ rm -f gcpugen.go.tmp
+ echo "package cpu" > gcpugen.go.tmp
+ echo "const cacheLineSize = `$(SHELL) $(srcdir)/goarch.sh $(GOARCH) cachelinesize`" >> gcpugen.go.tmp
+ $(SHELL) $(srcdir)/mvifdiff.sh gcpugen.go.tmp gcpugen.go
+ $(STAMP) $@
+
objabi.go: s-objabi; @true
s-objabi: Makefile
rm -f objabi.go.tmp
@@ -2830,6 +2829,7 @@ runtime.lo.dep: $(extra_go_files_runtime
syscall.lo.dep: $(extra_go_files_syscall)
runtime/internal/sys.lo.dep: $(extra_go_files_runtime_internal_sys)
internal/cpu.lo.dep: $(extra_go_files_internal_cpu)
+golang.org/x/sys/cpu.lo.dep: $(extra_go_files_golang_org_x_sys_cpu)
internal/goroot.lo.dep: $(extra_go_files_internal_goroot)
go/types.lo.dep: $(extra_go_files_go_types)
cmd/internal/objabi.lo.dep: $(extra_go_files_cmd_internal_objabi)
@@ -2886,13 +2886,13 @@ golang.org/x/sys/cpu_gccgo.lo: go/golang
@$(MKDIR_P) golang.org/x/sys
$(LTCOMPILE) -c -o $@ $(srcdir)/go/golang.org/x/sys/cpu/cpu_gccgo.c
-# Build internal/x/net/route only on BSD systems.
+# Build golang.org/x/net/route only on BSD systems.
-@LIBGO_IS_BSD_TRUE@$(eval $(call PACKAGE_template,internal/x/net/route))
+@LIBGO_IS_BSD_TRUE@$(eval $(call PACKAGE_template,golang.org/x/net/route))
-# Build internal/x/net/lif only on Solaris systems.
+# Build golang.org/x/net/lif only on Solaris systems.
-@LIBGO_IS_SOLARIS_TRUE@$(eval $(call PACKAGE_template,internal/x/net/lif))
+@LIBGO_IS_SOLARIS_TRUE@$(eval $(call PACKAGE_template,golang.org/x/net/lif))
check: check-tail
check-recursive: check-head
Index: libgo/go/golang.org/x/net/lif/syscall.go
===================================================================
--- libgo/go/golang.org/x/net/lif/syscall.go (revision 275594)
+++ libgo/go/golang.org/x/net/lif/syscall.go (working copy)
@@ -11,18 +11,12 @@ import (
"unsafe"
)
-//go:cgo_import_dynamic libc_ioctl ioctl "libc.so"
-
-//go:linkname procIoctl libc_ioctl
-
-var procIoctl uintptr
-
-func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (uintptr, uintptr, syscall.Errno)
+//extern __go_ioctl_ptr
+func libc_ioctl(int32, int32, unsafe.Pointer) int32
func ioctl(s, ioc uintptr, arg unsafe.Pointer) error {
- _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procIoctl)), 3, s, ioc, uintptr(arg), 0, 0, 0)
- if errno != 0 {
- return error(errno)
+ if libc_ioctl(int32(s), int32(ioc), arg) < 0 {
+ return syscall.GetErrno()
}
return nil
}
Index: libgo/go/golang.org/x/net/lif/zsys_solaris.go
===================================================================
--- libgo/go/golang.org/x/net/lif/zsys_solaris.go (nonexistent)
+++ libgo/go/golang.org/x/net/lif/zsys_solaris.go (working copy)
@@ -0,0 +1,101 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_solaris.go
+
+package lif
+
+import "unsafe"
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0x1a
+
+ sysSOCK_DGRAM = 0x1
+)
+
+type sockaddrStorage struct {
+ Family uint16
+ X_ss_pad1 [6]int8
+ X_ss_align float64
+ X_ss_pad2 [240]int8
+}
+
+const (
+ sysLIFC_NOXMIT = 0x1
+ sysLIFC_EXTERNAL_SOURCE = 0x2
+ sysLIFC_TEMPORARY = 0x4
+ sysLIFC_ALLZONES = 0x8
+ sysLIFC_UNDER_IPMP = 0x10
+ sysLIFC_ENABLED = 0x20
+
+ sysSIOCGLIFADDR = -0x3f87968f
+ sysSIOCGLIFDSTADDR = -0x3f87968d
+ sysSIOCGLIFFLAGS = -0x3f87968b
+ sysSIOCGLIFMTU = -0x3f879686
+ sysSIOCGLIFNETMASK = -0x3f879683
+ sysSIOCGLIFMETRIC = -0x3f879681
+ sysSIOCGLIFNUM = -0x3ff3967e
+ sysSIOCGLIFINDEX = -0x3f87967b
+ sysSIOCGLIFSUBNET = -0x3f879676
+ sysSIOCGLIFLNKINFO = -0x3f879674
+ sysSIOCGLIFCONF = -0x3fef965b
+ sysSIOCGLIFHWADDR = -0x3f879640
+)
+
+const (
+ sysIFF_UP = 0x1
+ sysIFF_BROADCAST = 0x2
+ sysIFF_DEBUG = 0x4
+ sysIFF_LOOPBACK = 0x8
+ sysIFF_POINTOPOINT = 0x10
+ sysIFF_NOTRAILERS = 0x20
+ sysIFF_RUNNING = 0x40
+ sysIFF_NOARP = 0x80
+ sysIFF_PROMISC = 0x100
+ sysIFF_ALLMULTI = 0x200
+ sysIFF_INTELLIGENT = 0x400
+ sysIFF_MULTICAST = 0x800
+ sysIFF_MULTI_BCAST = 0x1000
+ sysIFF_UNNUMBERED = 0x2000
+ sysIFF_PRIVATE = 0x8000
+)
+
+const (
+ sizeofLifnum = 0xc
+ sizeofLifreq = 0x178
+ sizeofLifconf = 0x18
+ sizeofLifIfinfoReq = 0x10
+)
+
+type lifnum struct {
+ Family uint16
+ Flags int32
+ Count int32
+}
+
+type lifreq struct {
+ Name [32]int8
+ Lifru1 [4]byte
+ Type uint32
+ Lifru [336]byte
+}
+
+type lifconf struct {
+ Family uint16
+ Flags int32
+ Len int32
+ Lifcu [unsafe.Sizeof(unsafe.Pointer(nil))]byte
+}
+
+type lifIfinfoReq struct {
+ Maxhops uint8
+ Reachtime uint32
+ Reachretrans uint32
+ Maxmtu uint32
+}
+
+const (
+ sysIFT_IPV4 = 0xc8
+ sysIFT_IPV6 = 0xc9
+ sysIFT_6TO4 = 0xca
+)
Index: libgo/go/golang.org/x/net/lif/zsys_solaris_amd64.go
===================================================================
--- libgo/go/golang.org/x/net/lif/zsys_solaris_amd64.go (revision 275594)
+++ libgo/go/golang.org/x/net/lif/zsys_solaris_amd64.go (nonexistent)
@@ -1,103 +0,0 @@
-// Created by cgo -godefs - DO NOT EDIT
-// cgo -godefs defs_solaris.go
-
-package lif
-
-const (
- sysAF_UNSPEC = 0x0
- sysAF_INET = 0x2
- sysAF_INET6 = 0x1a
-
- sysSOCK_DGRAM = 0x1
-)
-
-type sockaddrStorage struct {
- Family uint16
- X_ss_pad1 [6]int8
- X_ss_align float64
- X_ss_pad2 [240]int8
-}
-
-const (
- sysLIFC_NOXMIT = 0x1
- sysLIFC_EXTERNAL_SOURCE = 0x2
- sysLIFC_TEMPORARY = 0x4
- sysLIFC_ALLZONES = 0x8
- sysLIFC_UNDER_IPMP = 0x10
- sysLIFC_ENABLED = 0x20
-
- sysSIOCGLIFADDR = -0x3f87968f
- sysSIOCGLIFDSTADDR = -0x3f87968d
- sysSIOCGLIFFLAGS = -0x3f87968b
- sysSIOCGLIFMTU = -0x3f879686
- sysSIOCGLIFNETMASK = -0x3f879683
- sysSIOCGLIFMETRIC = -0x3f879681
- sysSIOCGLIFNUM = -0x3ff3967e
- sysSIOCGLIFINDEX = -0x3f87967b
- sysSIOCGLIFSUBNET = -0x3f879676
- sysSIOCGLIFLNKINFO = -0x3f879674
- sysSIOCGLIFCONF = -0x3fef965b
- sysSIOCGLIFHWADDR = -0x3f879640
-)
-
-const (
- sysIFF_UP = 0x1
- sysIFF_BROADCAST = 0x2
- sysIFF_DEBUG = 0x4
- sysIFF_LOOPBACK = 0x8
- sysIFF_POINTOPOINT = 0x10
- sysIFF_NOTRAILERS = 0x20
- sysIFF_RUNNING = 0x40
- sysIFF_NOARP = 0x80
- sysIFF_PROMISC = 0x100
- sysIFF_ALLMULTI = 0x200
- sysIFF_INTELLIGENT = 0x400
- sysIFF_MULTICAST = 0x800
- sysIFF_MULTI_BCAST = 0x1000
- sysIFF_UNNUMBERED = 0x2000
- sysIFF_PRIVATE = 0x8000
-)
-
-const (
- sizeofLifnum = 0xc
- sizeofLifreq = 0x178
- sizeofLifconf = 0x18
- sizeofLifIfinfoReq = 0x10
-)
-
-type lifnum struct {
- Family uint16
- Pad_cgo_0 [2]byte
- Flags int32
- Count int32
-}
-
-type lifreq struct {
- Name [32]int8
- Lifru1 [4]byte
- Type uint32
- Lifru [336]byte
-}
-
-type lifconf struct {
- Family uint16
- Pad_cgo_0 [2]byte
- Flags int32
- Len int32
- Pad_cgo_1 [4]byte
- Lifcu [8]byte
-}
-
-type lifIfinfoReq struct {
- Maxhops uint8
- Pad_cgo_0 [3]byte
- Reachtime uint32
- Reachretrans uint32
- Maxmtu uint32
-}
-
-const (
- sysIFT_IPV4 = 0xc8
- sysIFT_IPV6 = 0xc9
- sysIFT_6TO4 = 0xca
-)
Index: libgo/go/golang.org/x/sys/cpu/cpu_aix_ppc64.go
===================================================================
--- libgo/go/golang.org/x/sys/cpu/cpu_aix_ppc64.go (revision 275594)
+++ libgo/go/golang.org/x/sys/cpu/cpu_aix_ppc64.go (working copy)
@@ -6,8 +6,6 @@
package cpu
-const cacheLineSize = 128
-
const (
// getsystemcfg constants
_SC_IMPL = 2
Index: libgo/go/golang.org/x/sys/cpu/cpu_arm.go
===================================================================
--- libgo/go/golang.org/x/sys/cpu/cpu_arm.go (revision 275594)
+++ libgo/go/golang.org/x/sys/cpu/cpu_arm.go (nonexistent)
@@ -1,9 +0,0 @@
-// Copyright 2018 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.
-
-package cpu
-
-const cacheLineSize = 32
-
-func doinit() {}
Index: libgo/go/golang.org/x/sys/cpu/cpu_linux_arm64.go
===================================================================
--- libgo/go/golang.org/x/sys/cpu/cpu_linux_arm64.go (revision 275594)
+++ libgo/go/golang.org/x/sys/cpu/cpu_linux_arm64.go (working copy)
@@ -4,8 +4,6 @@
package cpu
-const cacheLineSize = 64
-
// HWCAP/HWCAP2 bits. These are exposed by Linux.
const (
hwcap_FP = 1 << 0
Index: libgo/go/golang.org/x/sys/cpu/cpu_linux_ppc64x.go
===================================================================
--- libgo/go/golang.org/x/sys/cpu/cpu_linux_ppc64x.go (revision 275594)
+++ libgo/go/golang.org/x/sys/cpu/cpu_linux_ppc64x.go (working copy)
@@ -7,8 +7,6 @@
package cpu
-const cacheLineSize = 128
-
// HWCAP/HWCAP2 bits. These are exposed by the kernel.
const (
// ISA Level
Index: libgo/go/golang.org/x/sys/cpu/cpu_linux_s390x.go
===================================================================
--- libgo/go/golang.org/x/sys/cpu/cpu_linux_s390x.go (revision 275594)
+++ libgo/go/golang.org/x/sys/cpu/cpu_linux_s390x.go (working copy)
@@ -4,8 +4,6 @@
package cpu
-const cacheLineSize = 256
-
const (
// bit mask values from /usr/include/bits/hwcap.h
hwcap_ZARCH = 2
Index: libgo/go/golang.org/x/sys/cpu/cpu_mips64x.go
===================================================================
--- libgo/go/golang.org/x/sys/cpu/cpu_mips64x.go (revision 275594)
+++ libgo/go/golang.org/x/sys/cpu/cpu_mips64x.go (nonexistent)
@@ -1,11 +0,0 @@
-// Copyright 2018 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 mips64 mips64le
-
-package cpu
-
-const cacheLineSize = 32
-
-func doinit() {}
Index: libgo/go/golang.org/x/sys/cpu/cpu_mipsx.go
===================================================================
--- libgo/go/golang.org/x/sys/cpu/cpu_mipsx.go (revision 275594)
+++ libgo/go/golang.org/x/sys/cpu/cpu_mipsx.go (nonexistent)
@@ -1,11 +0,0 @@
-// Copyright 2018 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 mips mipsle
-
-package cpu
-
-const cacheLineSize = 32
-
-func doinit() {}
Index: libgo/go/golang.org/x/sys/cpu/cpu_other_arm64.go
===================================================================
--- libgo/go/golang.org/x/sys/cpu/cpu_other_arm64.go (revision 275594)
+++ libgo/go/golang.org/x/sys/cpu/cpu_other_arm64.go (nonexistent)
@@ -1,11 +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 !linux,arm64
-
-package cpu
-
-const cacheLineSize = 64
-
-func doinit() {}
Index: libgo/go/golang.org/x/sys/cpu/cpu_wasm.go
===================================================================
--- libgo/go/golang.org/x/sys/cpu/cpu_wasm.go (revision 275594)
+++ libgo/go/golang.org/x/sys/cpu/cpu_wasm.go (nonexistent)
@@ -1,15 +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 wasm
-
-package cpu
-
-// We're compiling the cpu package for an unknown (software-abstracted) CPU.
-// Make CacheLinePad an empty struct and hope that the usual struct alignment
-// rules are good enough.
-
-const cacheLineSize = 0
-
-func doinit() {}
Index: libgo/go/golang.org/x/sys/cpu/cpu_x86.go
===================================================================
--- libgo/go/golang.org/x/sys/cpu/cpu_x86.go (revision 275594)
+++ libgo/go/golang.org/x/sys/cpu/cpu_x86.go (working copy)
@@ -6,8 +6,6 @@
package cpu
-const cacheLineSize = 64
-
func init() {
Initialized = true
Index: libgo/go/runtime/os_solaris.go
===================================================================
--- libgo/go/runtime/os_solaris.go (revision 275594)
+++ libgo/go/runtime/os_solaris.go (working copy)
@@ -31,7 +31,7 @@ func sem_reltimedwait_np(sem *semt, time
//go:nosplit
func semacreate(mp *m) {
- if mp.mos.waitsema != 0 {
+ if mp.waitsema != 0 {
return
}
@@ -44,7 +44,7 @@ func semacreate(mp *m) {
if sem_init(sem, 0, 0) != 0 {
throw("sem_init")
}
- mp.mos.waitsema = uintptr(unsafe.Pointer(sem))
+ mp.waitsema = uintptr(unsafe.Pointer(sem))
}
//go:nosplit
@@ -54,7 +54,7 @@ func semasleep(ns int64) int32 {
var ts timespec
ts.setNsec(ns)
- if sem_reltimedwait_np((*semt)(unsafe.Pointer(_m_.mos.waitsema)), &ts) != 0 {
+ if sem_reltimedwait_np((*semt)(unsafe.Pointer(_m_.waitsema)), &ts) != 0 {
err := errno()
if err == _ETIMEDOUT || err == _EAGAIN || err == _EINTR {
return -1
@@ -64,7 +64,7 @@ func semasleep(ns int64) int32 {
return 0
}
for {
- r1 := sem_wait((*semt)(unsafe.Pointer(_m_.mos.waitsema)))
+ r1 := sem_wait((*semt)(unsafe.Pointer(_m_.waitsema)))
if r1 == 0 {
break
}
@@ -78,7 +78,7 @@ func semasleep(ns int64) int32 {
//go:nosplit
func semawakeup(mp *m) {
- if sem_post((*semt)(unsafe.Pointer(mp.mos.waitsema))) != 0 {
+ if sem_post((*semt)(unsafe.Pointer(mp.waitsema))) != 0 {
throw("sem_post")
}
}
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/2] Sync hardware facility names with other files in os_linux_s390x.go
2019-09-06 18:29 libgo: Update to Go 1.13beta1 release Ian Lance Taylor
2019-09-07 12:03 ` Andreas Schwab
2019-09-09 8:26 ` Rainer Orth
@ 2019-10-14 9:09 ` Andreas Krebbel
2019-10-14 14:52 ` Ian Lance Taylor
2019-10-14 9:52 ` [PATCH 2/2] GO S/390: Add kdsaQuery function Andreas Krebbel
3 siblings, 1 reply; 11+ messages in thread
From: Andreas Krebbel @ 2019-10-14 9:09 UTC (permalink / raw)
To: gcc-patches
2019-10-14 Andreas Krebbel <krebbel@linux.ibm.com>
* libgo/go/runtime/os_linux_s390x.go: cpu.go, cpu_s390x.go,
cpu.go, and cpu_linux_s390x.go expect the hardware facilities in
capital letters. Sync this file accordingly. Add support for the
VXE HWCAP as well.
---
libgo/go/runtime/os_linux_s390x.go | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/libgo/go/runtime/os_linux_s390x.go b/libgo/go/runtime/os_linux_s390x.go
index 7640273e202..46fe817c6dd 100644
--- a/libgo/go/runtime/os_linux_s390x.go
+++ b/libgo/go/runtime/os_linux_s390x.go
@@ -16,18 +16,20 @@ const (
_HWCAP_S390_DFP = 64
_HWCAP_S390_ETF3EH = 256
_HWCAP_S390_VX = 2048 // vector facility
+ _HWCAP_S390_VXE = 8192
)
func archauxv(tag, val uintptr) {
switch tag {
case _AT_HWCAP: // CPU capability bit flags
- cpu.S390X.HasZArch = val&_HWCAP_S390_ZARCH != 0
+ cpu.S390X.HasZARCH = val&_HWCAP_S390_ZARCH != 0
cpu.S390X.HasSTFLE = val&_HWCAP_S390_STFLE != 0
- cpu.S390X.HasMSA = val&_HWCAP_S390_MSA != 0
- cpu.S390X.HasLDisp = val&_HWCAP_S390_LDISP != 0
- cpu.S390X.HasEImm = val&_HWCAP_S390_EIMM != 0
+ cpu.S390X.HasLDISP = val&_HWCAP_S390_LDISP != 0
+ cpu.S390X.HasEIMM = val&_HWCAP_S390_EIMM != 0
cpu.S390X.HasDFP = val&_HWCAP_S390_DFP != 0
- cpu.S390X.HasETF3Enhanced = val&_HWCAP_S390_ETF3EH != 0
+ cpu.S390X.HasETF3EH = val&_HWCAP_S390_ETF3EH != 0
+ cpu.S390X.HasMSA = val&_HWCAP_S390_MSA != 0
cpu.S390X.HasVX = val&_HWCAP_S390_VX != 0
+ cpu.S390X.HasVXE = val&_HWCAP_S390_VXE != 0
}
}
--
2.23.0
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 2/2] GO S/390: Add kdsaQuery function
2019-09-06 18:29 libgo: Update to Go 1.13beta1 release Ian Lance Taylor
` (2 preceding siblings ...)
2019-10-14 9:09 ` [PATCH 1/2] Sync hardware facility names with other files in os_linux_s390x.go Andreas Krebbel
@ 2019-10-14 9:52 ` Andreas Krebbel
2019-10-14 14:11 ` Ian Lance Taylor
3 siblings, 1 reply; 11+ messages in thread
From: Andreas Krebbel @ 2019-10-14 9:52 UTC (permalink / raw)
To: gcc-patches
Since the update to Go 1.13beta1 the kdsaQuery function is expected to
be present. However, it is not with GCCGO since the assembler file
from GOLANG cannot be understood by gas. This patch adds an inline
assembly implementation to cpu_gccgo.c.
2019-10-14 Andreas Krebbel <krebbel@linux.ibm.com>
* libgo/go/internal/cpu/cpu_gccgo.c:
---
libgo/go/internal/cpu/cpu_gccgo.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/libgo/go/internal/cpu/cpu_gccgo.c b/libgo/go/internal/cpu/cpu_gccgo.c
index ed0e7bff8cd..76b99cb00a0 100644
--- a/libgo/go/internal/cpu/cpu_gccgo.c
+++ b/libgo/go/internal/cpu/cpu_gccgo.c
@@ -184,4 +184,19 @@ struct queryResult klmdQuery() {
return ret;
}
+struct queryResult kdsaQuery(void)
+ __asm__(GOSYM_PREFIX "internal..z2fcpu.kdsaQuery")
+ __attribute__((no_split_stack));
+
+struct queryResult kdsaQuery() {
+ struct queryResult ret;
+
+ __asm__ ("lghi %%r0, 0\t\n" // set function code to 0 (KDSA-Query)
+ "la %%r1, %[ret]\t\n"
+ ".long 0xb93a0024\t\n" // kdsa
+ :[ret] "=QRST" (ret) : : "r0", "r1", "cc");
+
+ return ret;
+}
+
#endif /* defined(__s390x__) */
--
2.23.0
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] GO S/390: Add kdsaQuery function
2019-10-14 9:52 ` [PATCH 2/2] GO S/390: Add kdsaQuery function Andreas Krebbel
@ 2019-10-14 14:11 ` Ian Lance Taylor
0 siblings, 0 replies; 11+ messages in thread
From: Ian Lance Taylor @ 2019-10-14 14:11 UTC (permalink / raw)
To: Andreas Krebbel; +Cc: gcc-patches, gofrontend-dev
On Mon, Oct 14, 2019 at 2:09 AM Andreas Krebbel <krebbel@linux.ibm.com> wrote:
>
> Since the update to Go 1.13beta1 the kdsaQuery function is expected to
> be present. However, it is not with GCCGO since the assembler file
> from GOLANG cannot be understood by gas. This patch adds an inline
> assembly implementation to cpu_gccgo.c.
Thanks.
Committed to trunk.
Ian
> 2019-10-14 Andreas Krebbel <krebbel@linux.ibm.com>
>
> * libgo/go/internal/cpu/cpu_gccgo.c:
> ---
> libgo/go/internal/cpu/cpu_gccgo.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/libgo/go/internal/cpu/cpu_gccgo.c b/libgo/go/internal/cpu/cpu_gccgo.c
> index ed0e7bff8cd..76b99cb00a0 100644
> --- a/libgo/go/internal/cpu/cpu_gccgo.c
> +++ b/libgo/go/internal/cpu/cpu_gccgo.c
> @@ -184,4 +184,19 @@ struct queryResult klmdQuery() {
> return ret;
> }
>
> +struct queryResult kdsaQuery(void)
> + __asm__(GOSYM_PREFIX "internal..z2fcpu.kdsaQuery")
> + __attribute__((no_split_stack));
> +
> +struct queryResult kdsaQuery() {
> + struct queryResult ret;
> +
> + __asm__ ("lghi %%r0, 0\t\n" // set function code to 0 (KDSA-Query)
> + "la %%r1, %[ret]\t\n"
> + ".long 0xb93a0024\t\n" // kdsa
> + :[ret] "=QRST" (ret) : : "r0", "r1", "cc");
> +
> + return ret;
> +}
> +
> #endif /* defined(__s390x__) */
> --
> 2.23.0
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] Sync hardware facility names with other files in os_linux_s390x.go
2019-10-14 9:09 ` [PATCH 1/2] Sync hardware facility names with other files in os_linux_s390x.go Andreas Krebbel
@ 2019-10-14 14:52 ` Ian Lance Taylor
0 siblings, 0 replies; 11+ messages in thread
From: Ian Lance Taylor @ 2019-10-14 14:52 UTC (permalink / raw)
To: Andreas Krebbel; +Cc: gcc-patches, gofrontend-dev
On Mon, Oct 14, 2019 at 2:09 AM Andreas Krebbel <krebbel@linux.ibm.com> wrote:
>
> 2019-10-14 Andreas Krebbel <krebbel@linux.ibm.com>
>
> * libgo/go/runtime/os_linux_s390x.go: cpu.go, cpu_s390x.go,
> cpu.go, and cpu_linux_s390x.go expect the hardware facilities in
> capital letters. Sync this file accordingly. Add support for the
> VXE HWCAP as well.
Thanks.
Committed to trunk.
Ian
> libgo/go/runtime/os_linux_s390x.go | 12 +++++++-----
> 1 file changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/libgo/go/runtime/os_linux_s390x.go b/libgo/go/runtime/os_linux_s390x.go
> index 7640273e202..46fe817c6dd 100644
> --- a/libgo/go/runtime/os_linux_s390x.go
> +++ b/libgo/go/runtime/os_linux_s390x.go
> @@ -16,18 +16,20 @@ const (
> _HWCAP_S390_DFP = 64
> _HWCAP_S390_ETF3EH = 256
> _HWCAP_S390_VX = 2048 // vector facility
> + _HWCAP_S390_VXE = 8192
> )
>
> func archauxv(tag, val uintptr) {
> switch tag {
> case _AT_HWCAP: // CPU capability bit flags
> - cpu.S390X.HasZArch = val&_HWCAP_S390_ZARCH != 0
> + cpu.S390X.HasZARCH = val&_HWCAP_S390_ZARCH != 0
> cpu.S390X.HasSTFLE = val&_HWCAP_S390_STFLE != 0
> - cpu.S390X.HasMSA = val&_HWCAP_S390_MSA != 0
> - cpu.S390X.HasLDisp = val&_HWCAP_S390_LDISP != 0
> - cpu.S390X.HasEImm = val&_HWCAP_S390_EIMM != 0
> + cpu.S390X.HasLDISP = val&_HWCAP_S390_LDISP != 0
> + cpu.S390X.HasEIMM = val&_HWCAP_S390_EIMM != 0
> cpu.S390X.HasDFP = val&_HWCAP_S390_DFP != 0
> - cpu.S390X.HasETF3Enhanced = val&_HWCAP_S390_ETF3EH != 0
> + cpu.S390X.HasETF3EH = val&_HWCAP_S390_ETF3EH != 0
> + cpu.S390X.HasMSA = val&_HWCAP_S390_MSA != 0
> cpu.S390X.HasVX = val&_HWCAP_S390_VX != 0
> + cpu.S390X.HasVXE = val&_HWCAP_S390_VXE != 0
> }
> }
> --
> 2.23.0
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: libgo: Update to Go 1.13beta1 release
2019-09-07 7:33 libgo: Update to Go 1.13beta1 release Bernd Edlinger
@ 2019-09-07 9:58 ` Andreas Schwab
0 siblings, 0 replies; 11+ messages in thread
From: Andreas Schwab @ 2019-09-07 9:58 UTC (permalink / raw)
To: Bernd Edlinger; +Cc: Ian Lance Taylor, gcc-patches, gofrontend-dev
On Sep 07 2019, Bernd Edlinger <bernd.edlinger@hotmail.de> wrote:
> Hi Ian,
>
>> gotools:
>>
>> 2019-09-06 Ian Lance Taylor <iant@golang.org>
>>
>> * Makefile.am (check-carchive-test): Just run "go test", not "go
>> test carchive_test.go".
>> * Makefile.in: Regenerate.
>>
>> gcc/testsuite:
>>
>> 2019-09-06 Ian Lance Taylor <iant@golang.org>
>>
>> * go.test/test/fixedbugs/bug369.go: Update to match libgo update
>> to Go 1.13beta1.
>>
>
> this patch can't build on arm anymore:
Or any other non-x86 architecture.
Andreas.
--
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1
"And now for something completely different."
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: libgo: Update to Go 1.13beta1 release
@ 2019-09-07 7:33 Bernd Edlinger
2019-09-07 9:58 ` Andreas Schwab
0 siblings, 1 reply; 11+ messages in thread
From: Bernd Edlinger @ 2019-09-07 7:33 UTC (permalink / raw)
To: Ian Lance Taylor; +Cc: gcc-patches, gofrontend-dev
Hi Ian,
> gotools:
>
> 2019-09-06 Ian Lance Taylor <iant@golang.org>
>
> * Makefile.am (check-carchive-test): Just run "go test", not "go
> test carchive_test.go".
> * Makefile.in: Regenerate.
>
> gcc/testsuite:
>
> 2019-09-06 Ian Lance Taylor <iant@golang.org>
>
> * go.test/test/fixedbugs/bug369.go: Update to match libgo update
> to Go 1.13beta1.
>
this patch can't build on arm anymore:
/bin/bash ./libtool --tag=CC --mode=compile /home/ed/gnu/gcc-build-arm-linux-gnueabihf-linux64/./gcc/xgcc -B/home/ed/gnu/gcc-build-arm-linux-gnueabihf-linux64/./gcc/ -B/home/ed/gnu/arm-linux-gnueabihf-linux64/arm-linux-gnueabihf/bin/ -B/home/ed/gnu/arm-linux-gnueabihf-linux64/arm-linux-gnueabihf/lib/ -isystem /home/ed/gnu/arm-linux-gnueabihf-linux64/arm-linux-gnueabihf/include -isystem /home/ed/gnu/arm-linux-gnueabihf-linux64/arm-linux-gnueabihf/sys-include -DHAVE_CONFIG_H -I. -I../../../gcc-trunk/libgo -I ../../../gcc-trunk/libgo/runtime -I../../../gcc-trunk/libgo/../libffi/include -I../libffi/include -pthread -L../libatomic/.libs -fexceptions -fnon-call-exceptions -Wall -Wextra -Wwrite-strings -Wcast-qual -Werror -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I ../../../gcc-trunk/libgo/../libgcc -I ../../../gcc-trunk/libgo/../libbacktrace -I ../../gcc/include -g -O2 -c -o golang.org/x/sys/cpu_gccgo.lo ../../../gcc-trunk/libgo/go/golang.org/x/sys/cpu/cpu_gccgo.c
libtool: compile: /home/ed/gnu/gcc-build-arm-linux-gnueabihf-linux64/./gcc/xgcc -B/home/ed/gnu/gcc-build-arm-linux-gnueabihf-linux64/./gcc/ -B/home/ed/gnu/arm-linux-gnueabihf-linux64/arm-linux-gnueabihf/bin/ -B/home/ed/gnu/arm-linux-gnueabihf-linux64/arm-linux-gnueabihf/lib/ -isystem /home/ed/gnu/arm-linux-gnueabihf-linux64/arm-linux-gnueabihf/include -isystem /home/ed/gnu/arm-linux-gnueabihf-linux64/arm-linux-gnueabihf/sys-include -DHAVE_CONFIG_H -I. -I../../../gcc-trunk/libgo -I ../../../gcc-trunk/libgo/runtime -I../../../gcc-trunk/libgo/../libffi/include -I../libffi/include -pthread -L../libatomic/.libs -fexceptions -fnon-call-exceptions -Wall -Wextra -Wwrite-strings -Wcast-qual -Werror -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I ../../../gcc-trunk/libgo/../libgcc -I ../../../gcc-trunk/libgo/../libbacktrace -I ../../gcc/include -g -O2 -c ../../../gcc-trunk/libgo/go/golang.org/x/sys/cpu/cpu_gccgo.c -fPIC -DPIC -o golang.org/x/sys/.libs/cpu_gccgo.o
../../../gcc-trunk/libgo/go/golang.org/x/sys/cpu/cpu_gccgo.c:8:10: fatal error: cpuid.h: No such file or directory
8 | #include <cpuid.h>
| ^~~~~~~~~
compilation terminated.
make[4]: *** [golang.org/x/sys/cpu_gccgo.lo] Error 1
make[4]: *** Waiting for unfinished jobs....
make[4]: Leaving directory `/home/ed/gnu/gcc-build-arm-linux-gnueabihf-linux64/arm-linux-gnueabihf/libgo'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/home/ed/gnu/gcc-build-arm-linux-gnueabihf-linux64/arm-linux-gnueabihf/libgo'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/ed/gnu/gcc-build-arm-linux-gnueabihf-linux64/arm-linux-gnueabihf/libgo'
make[1]: *** [all-target-libgo] Error 2
make[1]: Leaving directory `/home/ed/gnu/gcc-build-arm-linux-gnueabihf-linux64'
make: *** [all] Error 2
Bernd.
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2019-10-14 14:11 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-06 18:29 libgo: Update to Go 1.13beta1 release Ian Lance Taylor
2019-09-07 12:03 ` Andreas Schwab
2019-09-09 23:13 ` Ian Lance Taylor
2019-09-09 8:26 ` Rainer Orth
2019-09-10 20:41 ` Ian Lance Taylor
2019-10-14 9:09 ` [PATCH 1/2] Sync hardware facility names with other files in os_linux_s390x.go Andreas Krebbel
2019-10-14 14:52 ` Ian Lance Taylor
2019-10-14 9:52 ` [PATCH 2/2] GO S/390: Add kdsaQuery function Andreas Krebbel
2019-10-14 14:11 ` Ian Lance Taylor
2019-09-07 7:33 libgo: Update to Go 1.13beta1 release Bernd Edlinger
2019-09-07 9:58 ` Andreas Schwab
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).