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

Reply via email to