Since it looks like there might be a 6.5 release, here is backport of https://gcc.gnu.org/ml/gcc-patches/2018-06/msg01420.html
to GCC 6 branch. This removes the syscall.Ustat function from libgo, since the ustat function is being removed from new versions of glibc. Bootstrapped and ran Go tests on x86_64-pc-linux-gnu. OK for GCC 6 branch? Ian
Index: libgo/Makefile.am =================================================================== --- libgo/Makefile.am (revision 262106) +++ libgo/Makefile.am (working copy) @@ -1989,17 +1989,6 @@ else syscall_lsf_file = endif -# GNU/Linux specific ustat support. -if LIBGO_IS_LINUX -if LIBGO_IS_ARM64 -syscall_ustat_file = -else -syscall_ustat_file = go/syscall/libcall_linux_ustat.go -endif -else -syscall_ustat_file = -endif - # GNU/Linux specific utimesnano support. if LIBGO_IS_LINUX syscall_utimesnano_file = go/syscall/libcall_linux_utimesnano.go Index: libgo/configure.ac =================================================================== --- libgo/configure.ac (revision 262106) +++ libgo/configure.ac (working copy) @@ -519,24 +519,6 @@ AC_CHECK_HEADERS([linux/filter.h linux/i #endif ]) -AC_CACHE_CHECK([whether <ustat.h> can be used], -[libgo_cv_c_ustat_h], -[CFLAGS_hold=$CFLAGS -CFLAGS="$CFLAGS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE $OSCFLAGS" -AC_COMPILE_IFELSE( -[AC_LANG_SOURCE([ -#include <sys/types.h> -#ifdef HAVE_LINUX_FILTER_H -#include <linux/filter.h> -#endif -#include <ustat.h> -])], [libgo_cv_c_ustat_h=yes], [libgo_cv_c_ustat_h=no]) -CFLAGS=$CFLAGS_hold]) -if test $libgo_cv_c_ustat_h = yes; then - AC_DEFINE(HAVE_USTAT_H, 1, - [Define to 1 if you have the <ustat.h> header file and it works.]) -fi - AM_CONDITIONAL(HAVE_SYS_MMAN_H, test "$ac_cv_header_sys_mman_h" = yes) AC_CHECK_FUNCS(strerror_r strsignal wait4 mincore setenv unsetenv dl_iterate_phdr) Index: libgo/go/syscall/libcall_linux_ustat.go =================================================================== --- libgo/go/syscall/libcall_linux_ustat.go (revision 262106) +++ libgo/go/syscall/libcall_linux_ustat.go (nonexistent) @@ -1,11 +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. - -// GNU/Linux library ustat call. -// This is not supported on some kernels, such as arm64. - -package syscall - -//sys Ustat(dev int, ubuf *Ustat_t) (err error) -//ustat(dev _dev_t, ubuf *Ustat_t) _C_int Index: libgo/mksysinfo.sh =================================================================== --- libgo/mksysinfo.sh (revision 262106) +++ libgo/mksysinfo.sh (working copy) @@ -142,9 +142,6 @@ cat > sysinfo.c <<EOF #if defined(HAVE_SYS_SYSINFO_H) #include <sys/sysinfo.h> #endif -#if defined(HAVE_USTAT_H) -#include <ustat.h> -#endif #if defined(HAVE_UTIME_H) #include <utime.h> #endif @@ -1350,20 +1347,6 @@ grep '^type _sysinfo ' gen-sysinfo.go | -e 's/mem_unit/Unit/' \ >> ${OUT} -# The ustat struct. -grep '^type _ustat ' gen-sysinfo.go | \ - sed -e 's/_ustat/Ustat_t/' \ - -e 's/f_tfree/Tfree/' \ - -e 's/f_tinode/Tinoe/' \ - -e 's/f_fname/Fname/' \ - -e 's/f_fpack/Fpack/' \ - >> ${OUT} -# Force it to be defined, as on some older GNU/Linux systems the -# header file fails when using with <linux/filter.h>. -if ! grep 'type _ustat ' gen-sysinfo.go >/dev/null 2>&1; then - echo 'type Ustat_t struct { Tfree int32; Tinoe uint64; Fname [5+1]int8; Fpack [5+1]int8; }' >> ${OUT} -fi - # The utimbuf struct. grep '^type _utimbuf ' gen-sysinfo.go | \ sed -e 's/_utimbuf/Utimbuf/' \