Ian Lance Taylor <i...@golang.org> writes: > I've committed a patch to libgo to update it to the Go 1.4 release, > except for the runtime package. Much of the runtime package was > rewritten in Go, and it does not really affect users of the library, > so I've postponed that complex merge. All the other packages are > updated. A few minor compiler changes were required, as well as a few > changes to the runtime packages required for other changes. The > testsuite script was changed to add support for the new TestMain > function, which is used by one or two of the standard packages. > > As usual with libgo updates the entire patch is too large to attach > here. I've attached the changes to configuration/build files and the > runtime package. > > Note that the type descriptor format has changed very very slightly to > include an additional flag. This means that all existing Go files > must be recompiled in order to work with this updated libgo. I will > bump the libgo version number shortly. > > Bootstrapped and ran Go testsuite on x86_64-unknown-linux-gnu. > Committed to mainline.
This (and perhaps the previous gotools) patch broke Solaris bootstrap: /vol/gcc/src/hg/trunk/local/libgo/go/net/tcpsockopt_unix.go:23:73: error: reference to undefined identifier 'syscall.TCP_KEEPINTVL' if err := syscall.SetsockoptInt(fd.sysfd, syscall.IPPROTO_TCP, syscall.TCP_KEEPINTVL, secs); err != nil { /vol/gcc/src/hg/trunk/local/libgo/go/net/tcpsockopt_unix.go:26:103: error: reference to undefined identifier 'syscall.TCP_KEEPIDLE' return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd.sysfd, syscall.IPPROTO_TCP, syscall.TCP_KEEPIDLE, secs)) make[4]: *** [net.lo] Error 1 The following patch fixes this:
diff --git a/libgo/mksysinfo.sh b/libgo/mksysinfo.sh --- a/libgo/mksysinfo.sh +++ b/libgo/mksysinfo.sh @@ -340,7 +340,7 @@ grep '^const _SHUT_' gen-sysinfo.go | sed -e 's/^\(const \)_\(SHUT[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT} # The net package requires some const definitions. -for m in IP_PKTINFO IPV6_V6ONLY IPPROTO_IPV6 IPV6_JOIN_GROUP IPV6_LEAVE_GROUP IPV6_TCLASS SO_REUSEPORT; do +for m in IP_PKTINFO IPV6_V6ONLY IPPROTO_IPV6 IPV6_JOIN_GROUP IPV6_LEAVE_GROUP IPV6_TCLASS SO_REUSEPORT TCP_KEEPINTVL TCP_KEEPIDLE; do if ! grep "^const $m " ${OUT} >/dev/null 2>&1; then echo "const $m = 0" >> ${OUT} fi
Apart from that, bootstrap fails in gotools: due to the use of -static-libgo, all commands there fail to link since the socket functions are missing. It seems like $LIBS from libgo needs to be added somewhere, but I'm unsure how best to handle this. To make any progress at all, I've just manually added -lsocket -lnsl to gotools/Makefile (AM_LDFLAGS). Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University