This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: libgo patch committed: Update to Go 1.4
- From: Rainer Orth <ro at CeBiTec dot Uni-Bielefeld dot DE>
- To: Ian Lance Taylor <iant at golang dot org>
- Cc: gcc-patches <gcc-patches at gcc dot gnu dot org>, "gofrontend-dev\ at googlegroups dot com" <gofrontend-dev at googlegroups dot com>
- Date: Thu, 15 Jan 2015 17:30:21 +0100
- Subject: Re: libgo patch committed: Update to Go 1.4
- Authentication-results: sourceware.org; auth=none
- References: <CAOyqgcW7+8ZXASWH4CLuK3zWEOb8zu8Lx0oeqTzaABOWFQKBxQ at mail dot gmail dot com>
Ian Lance Taylor <iant@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