On Fri, Jul 21, 2017 at 1:58 PM, Andreas Schwab <sch...@linux-m68k.org> wrote: > On Jul 21 2017, Ian Lance Taylor <i...@golang.org> wrote: > >> In libgo we unconditionally set _FILE_OFFSET_BITS to 64 in >> configure.ac, so we should unconditionally call the statfs64 and >> fstatfs64 functions rather than statfs/fstatfs. > > That should happen automatically when building with > _FILE_OFFSET_BITS=64.
For C code, yes, because of #include magic. But these names are being generated directly by the Go frontend. >> These functions should be available on all versions of GNU/Linux >> since 2.6. > > Its a property of glibc, not the kernel. OK, but, in any case, a long time. > Wrong patch? Yes, sorry, not sure what happened. Correct patch attached. Ian
commit e1bd9ea4dc16e228164c92a12c5229ddf20f2b50 Author: Ian Lance Taylor <i...@golang.org> Date: Fri Jul 21 11:51:58 2017 -0700 syscall: call f?statfs64 on GNU/Linux We unconditionally set _FILE_OFFSET_BITS to 64 in configure.ac, so we should unconditionally call the statfs64 and fstatfs64 functions. These functions should be available on all versions of GNU/Linux since 2.6. On 64-bit systems they are aliased to statfs/fstatfs, and on 32-bit systems they use the 64-bit data structures. Fixes golang/go#20922 Change-Id: Ibcd1e53b03f3c8db91a3cd8825d06bcf8f43f443 Reviewed-on: https://go-review.googlesource.com/50635 Reviewed-by: Than McIntosh <th...@google.com> diff --git a/libgo/go/syscall/libcall_linux.go b/libgo/go/syscall/libcall_linux.go index b58b2ddd..5f477840 100644 --- a/libgo/go/syscall/libcall_linux.go +++ b/libgo/go/syscall/libcall_linux.go @@ -212,7 +212,7 @@ func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) { //flock(fd _C_int, how _C_int) _C_int //sys Fstatfs(fd int, buf *Statfs_t) (err error) -//fstatfs(fd _C_int, buf *Statfs_t) _C_int +//fstatfs64(fd _C_int, buf *Statfs_t) _C_int func Gettid() (tid int) { r1, _, _ := Syscall(SYS_GETTID, 0, 0, 0) @@ -360,7 +360,7 @@ func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n i } //sys Statfs(path string, buf *Statfs_t) (err error) -//statfs(path *byte, buf *Statfs_t) _C_int +//statfs64(path *byte, buf *Statfs_t) _C_int //sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) //sync_file_range(fd _C_int, off Offset_t, n Offset_t, flags _C_uint) _C_int