This libgo patch alwayss define _AT_FDCWD and IPv6MTUInfo in the syscall package. They aren't defined by old versions of glibc, but are required by the code in syscall_linux.go. This should fix GCC PR 88060. Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed to mainline.
Ian
Index: gcc/go/gofrontend/MERGE =================================================================== --- gcc/go/gofrontend/MERGE (revision 266324) +++ gcc/go/gofrontend/MERGE (working copy) @@ -1,4 +1,4 @@ -559fae430b81595efe151222385192a07a9fc3c3 +37cb9763cbe8407b8c3a237b05a5272a226f14a0 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. Index: libgo/mksysinfo.sh =================================================================== --- libgo/mksysinfo.sh (revision 266324) +++ libgo/mksysinfo.sh (working copy) @@ -202,6 +202,11 @@ if ! grep '^const AF_LOCAL ' ${OUT} >/de fi fi +# The syscall package requires _AT_FDCWD, but doesn't export it. +if ! grep '^const _AT_FDCWD = ' ${OUT} >/dev/null 2>&1; then + echo "const _AT_FDCWD = -100" >> ${OUT} +fi + # sysconf constants. grep '^const __SC' gen-sysinfo.go | sed -e 's/^\(const \)__\(SC[^= ]*\)\(.*\)$/\1\2 = __\2/' >> ${OUT} @@ -669,6 +674,14 @@ grep '^type _ip6_mtuinfo ' gen-sysinfo.g -e 's/ip6m_mtu/Mtu/' \ >> ${OUT} +# We need IPv6MTUInfo to compile the syscall package. +if ! grep 'type IPv6MTUInfo ' ${OUT} >/dev/null 2>&1; then + echo 'type IPv6MTUInfo struct { Addr RawSockaddrInet6; Mtu uint32; }' >> ${OUT} +fi +if ! grep 'const _sizeof_ip6_mtuinfo = ' ${OUT} >/dev/null 2>&1; then + echo 'const SizeofIPv6MTUInfo = 32' >> ${OUT} +fi + # Try to guess the type to use for fd_set. fd_set=`grep '^type _fd_set ' gen-sysinfo.go || true` fds_bits_type="_C_long"