public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* 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-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).