]> Cypherpunks repositories - gostls13.git/commitdiff
syscall: force O_LARGEFILE in Linux open system call
authorRuss Cox <rsc@golang.org>
Fri, 30 Apr 2010 06:34:06 +0000 (23:34 -0700)
committerRuss Cox <rsc@golang.org>
Fri, 30 Apr 2010 06:34:06 +0000 (23:34 -0700)
Fixes #717.

R=adg, PeterGo
CC=golang-dev
https://golang.org/cl/1032041

src/pkg/syscall/mkall.sh
src/pkg/syscall/mkerrors.sh
src/pkg/syscall/syscall_linux.go
src/pkg/syscall/zerrors_linux_386.go
src/pkg/syscall/zerrors_linux_amd64.go
src/pkg/syscall/zsyscall_linux_386.go
src/pkg/syscall/zsyscall_linux_amd64.go

index 42b944f9a0431b01492cd43e6d7a342e5a4e5f6e..714a47ead2e2bfb38986cb7cc49c653ea97b81a4 100755 (executable)
@@ -100,30 +100,36 @@ _* | *_ | _)
        exit 1
        ;;
 freebsd_386)
+       mkerrors="$mkerrors -f -m32"
        mksyscall="./mksyscall.sh -l32"
        mksysnum="./mksysnum_freebsd.sh /usr/src/sys/kern/syscalls.master"
        mktypes="godefs -gsyscall -f-m32"
        ;;
 freebsd_amd64)
+       mkerrors="$mkerrors -f -m64"
        mksysnum="./mksysnum_freebsd.sh /usr/src/sys/kern/syscalls.master"
        mktypes="godefs -gsyscall -f-m64"
        ;;
 darwin_386)
+       mkerrors="$mkerrors -f -m32"
        mksyscall="./mksyscall.sh -l32"
        mksysnum="./mksysnum_darwin.sh /home/rsc/pub/xnu-1228/bsd/kern/syscalls.master"
        mktypes="godefs -gsyscall -f-m32"
        ;;
 darwin_amd64)
+       mkerrors="$mkerrors -f -m64"
        mksysnum="./mksysnum_darwin.sh /home/rsc/pub/xnu-1228/bsd/kern/syscalls.master"
        mktypes="godefs -gsyscall -f-m64"
        mkerrors="./mkerrors.sh"
        ;;
 linux_386)
+       mkerrors="$mkerrors -f -m32"
        mksyscall="./mksyscall.sh -l32"
        mksysnum="./mksysnum_linux.sh /usr/include/asm/unistd_32.h"
        mktypes="godefs -gsyscall -f-m32"
        ;;
 linux_amd64)
+       mkerrors="$mkerrors -f -m64"
        mksysnum="./mksysnum_linux.sh /usr/include/asm/unistd_64.h"
        mktypes="godefs -gsyscall -f-m64"
        ;;
index 84f1e59a1dcdf07e14e550e435fde605a11e763d..467ebe38cb5eacb8804c718916a9bb86f48a40d3 100755 (executable)
@@ -61,6 +61,18 @@ includes='
 #include <signal.h>
 '
 
+ccflags=""
+next=false
+for i
+do
+       if $next; then
+               ccflags="$ccflags $i"
+               next=false
+       elif [ "$i" = "-f" ]; then
+               next=true
+       fi
+done
+
 # Write godefs input.
 (
        indirect="includes_$(uname)"
@@ -70,7 +82,7 @@ includes='
 
        # The gcc command line prints all the #defines
        # it encounters while processing the input
-       echo "${!indirect} $includes" | $GCC -x c - -E -dM |
+       echo "${!indirect} $includes" | $GCC -x c - -E -dM $ccflags |
        awk '
                $1 != "#define" || $2 ~ /\(/ {next}
                
@@ -94,7 +106,7 @@ includes='
 
 # Pull out just the error names for later.
 errors=$(
-       echo '#include <errno.h>' | $GCC -x c - -E -dM |
+       echo '#include <errno.h>' | $GCC -x c - -E -dM $ccflags |
        awk '$1=="#define" && $2 ~ /^E[A-Z0-9_]+$/ { print $2 }' |
        sort
 )
@@ -102,7 +114,7 @@ errors=$(
 echo '// mkerrors.sh' "$@"
 echo '// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT'
 echo
-godefs -gsyscall "$@" _const.c
+godefs "$@" -gsyscall "$@" _const.c
 
 # Run C program to print error strings.
 (
@@ -155,4 +167,4 @@ main(void)
 '
 ) >_errors.c
 
-gcc -o _errors _errors.c && ./_errors && rm -f _errors.c _errors _const.c
+gcc $ccflags -o _errors _errors.c && ./_errors && rm -f _errors.c _errors _const.c
index 82401ac3d40646ddf86b01cd9d7c44eb7fad65be..8ea1aa59d2cbfca8cd7342bec2e849947d0bf87a 100644 (file)
@@ -19,6 +19,11 @@ const OS = "linux"
  * Wrapped
  */
 
+//sys  open(path string, mode int, perm int) (fd int, errno int)
+func Open(path string, mode int, perm int) (fd int, errno int) {
+       return open(path, mode|O_LARGEFILE, perm)
+}
+
 //sys  pipe(p *[2]_C_int) (errno int)
 func Pipe(p []int) (errno int) {
        if len(p) != 2 {
@@ -576,7 +581,6 @@ func PtraceDetach(pid int) (errno int) { return ptrace(PTRACE_DETACH, pid, 0, 0)
 //sys  Mknod(path string, mode int, dev int) (errno int)
 //sys  Mknodat(dirfd int, path string, mode int, dev int) (errno int)
 //sys  Nanosleep(time *Timespec, leftover *Timespec) (errno int)
-//sys  Open(path string, mode int, perm int) (fd int, errno int)
 //sys  Openat(dirfd int, path string, flags int, mode int) (fd int, errno int)
 //sys  Pause() (errno int)
 //sys  PivotRoot(newroot string, putold string) (errno int) = SYS_PIVOT_ROOT
index ce0edec0b578d55257cdf1e8d9edd8cafa6506b3..d7cb66cb2a69507d4382c9b5ed6c79106b642c29 100644 (file)
@@ -1,7 +1,7 @@
-// mkerrors.sh
+// mkerrors.sh -f -m32
 // MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
 
-// godefs -gsyscall _const.c
+// godefs -f -m32 -gsyscall -f -m32 _const.c
 
 // MACHINE GENERATED - DO NOT EDIT.
 
@@ -49,6 +49,7 @@ const (
        EAFNOSUPPORT                     = 0x61
        EAGAIN                           = 0xb
        EALREADY                         = 0x72
+       EAX                              = 0x6
        EBADE                            = 0x34
        EBADF                            = 0x9
        EBADFD                           = 0x4d
@@ -57,7 +58,9 @@ const (
        EBADRQC                          = 0x38
        EBADSLT                          = 0x39
        EBFONT                           = 0x3b
+       EBP                              = 0x5
        EBUSY                            = 0x10
+       EBX                              = 0
        ECANCELED                        = 0x7d
        ECHILD                           = 0xa
        ECHRNG                           = 0x2c
@@ -65,15 +68,19 @@ const (
        ECONNABORTED                     = 0x67
        ECONNREFUSED                     = 0x6f
        ECONNRESET                       = 0x68
+       ECX                              = 0x1
        EDEADLK                          = 0x23
        EDEADLOCK                        = 0x23
        EDESTADDRREQ                     = 0x59
+       EDI                              = 0x4
        EDOM                             = 0x21
        EDOTDOT                          = 0x49
        EDQUOT                           = 0x7a
+       EDX                              = 0x2
        EEXIST                           = 0x11
        EFAULT                           = 0xe
        EFBIG                            = 0x1b
+       EFL                              = 0xe
        EHOSTDOWN                        = 0x70
        EHOSTUNREACH                     = 0x71
        EIDRM                            = 0x2b
@@ -82,6 +89,7 @@ const (
        EINTR                            = 0x4
        EINVAL                           = 0x16
        EIO                              = 0x5
+       EIP                              = 0xc
        EISCONN                          = 0x6a
        EISDIR                           = 0x15
        EISNAM                           = 0x78
@@ -172,7 +180,9 @@ const (
        EREMOTEIO                        = 0x79
        ERESTART                         = 0x55
        EROFS                            = 0x1e
+       ES                               = 0x8
        ESHUTDOWN                        = 0x6c
+       ESI                              = 0x3
        ESOCKTNOSUPPORT                  = 0x5e
        ESPIPE                           = 0x1d
        ESRCH                            = 0x3
@@ -198,8 +208,8 @@ const (
        F_GETFD                          = 0x1
        F_GETFL                          = 0x3
        F_GETLEASE                       = 0x401
-       F_GETLK                          = 0x5
-       F_GETLK64                        = 0x5
+       F_GETLK                          = 0xc
+       F_GETLK64                        = 0xc
        F_GETOWN                         = 0x9
        F_GETSIG                         = 0xb
        F_LOCK                           = 0x1
@@ -209,10 +219,10 @@ const (
        F_SETFD                          = 0x2
        F_SETFL                          = 0x4
        F_SETLEASE                       = 0x400
-       F_SETLK                          = 0x6
-       F_SETLK64                        = 0x6
-       F_SETLKW                         = 0x7
-       F_SETLKW64                       = 0x7
+       F_SETLK                          = 0xd
+       F_SETLK64                        = 0xd
+       F_SETLKW                         = 0xe
+       F_SETLKW64                       = 0xe
        F_SETOWN                         = 0x8
        F_SETSIG                         = 0xa
        F_SHLCK                          = 0x8
@@ -344,7 +354,7 @@ const (
        O_DSYNC                          = 0x1000
        O_EXCL                           = 0x80
        O_FSYNC                          = 0x1000
-       O_LARGEFILE                      = 0
+       O_LARGEFILE                      = 0x8000
        O_NDELAY                         = 0x800
        O_NOATIME                        = 0x40000
        O_NOCTTY                         = 0x100
@@ -356,7 +366,6 @@ const (
        O_SYNC                           = 0x1000
        O_TRUNC                          = 0x200
        O_WRONLY                         = 0x1
-       PTRACE_ARCH_PRCTL                = 0x1e
        PTRACE_ATTACH                    = 0x10
        PTRACE_CONT                      = 0x7
        PTRACE_DETACH                    = 0x11
@@ -396,6 +405,8 @@ const (
        PTRACE_SET_THREAD_AREA           = 0x1a
        PTRACE_SINGLESTEP                = 0x9
        PTRACE_SYSCALL                   = 0x18
+       PTRACE_SYSEMU                    = 0x1f
+       PTRACE_SYSEMU_SINGLESTEP         = 0x20
        PTRACE_TRACEME                   = 0
        SHUT_RD                          = 0
        SHUT_RDWR                        = 0x2
@@ -540,7 +551,7 @@ const (
        WNOHANG                          = 0x1
        WNOTHREAD                        = 0x20000000
        WNOWAIT                          = 0x1000000
-       WORDSIZE                         = 0x40
+       WORDSIZE                         = 0x20
        WSTOPPED                         = 0x2
        WUNTRACED                        = 0x2
 )
index ce0edec0b578d55257cdf1e8d9edd8cafa6506b3..c9ee470c41215e83fe20867f047a7ed306a22bd7 100644 (file)
@@ -1,7 +1,7 @@
-// mkerrors.sh
+// mkerrors.sh -f -m64
 // MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
 
-// godefs -gsyscall _const.c
+// godefs -f -m64 -gsyscall -f -m64 _const.c
 
 // MACHINE GENERATED - DO NOT EDIT.
 
index 951ed1f14bcd6d1fca104932ca7c75dccf11beda..58b2979fcb246e5750220eecd661f1e0ae648517 100644 (file)
@@ -5,6 +5,13 @@ package syscall
 
 import "unsafe"
 
+func open(path string, mode int, perm int) (fd int, errno int) {
+       r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(perm))
+       fd = int(r0)
+       errno = int(e1)
+       return
+}
+
 func pipe(p *[2]_C_int) (errno int) {
        _, _, e1 := Syscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
        errno = int(e1)
@@ -314,13 +321,6 @@ func Nanosleep(time *Timespec, leftover *Timespec) (errno int) {
        return
 }
 
-func Open(path string, mode int, perm int) (fd int, errno int) {
-       r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(perm))
-       fd = int(r0)
-       errno = int(e1)
-       return
-}
-
 func Openat(dirfd int, path string, flags int, mode int) (fd int, errno int) {
        r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(flags), uintptr(mode), 0, 0)
        fd = int(r0)
index 030bed26043310d0bb5e8e6574e330737423e623..c5daf0d9ab4a4b8dcd5519910276199c93971ea1 100644 (file)
@@ -5,6 +5,13 @@ package syscall
 
 import "unsafe"
 
+func open(path string, mode int, perm int) (fd int, errno int) {
+       r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(perm))
+       fd = int(r0)
+       errno = int(e1)
+       return
+}
+
 func pipe(p *[2]_C_int) (errno int) {
        _, _, e1 := Syscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
        errno = int(e1)
@@ -314,13 +321,6 @@ func Nanosleep(time *Timespec, leftover *Timespec) (errno int) {
        return
 }
 
-func Open(path string, mode int, perm int) (fd int, errno int) {
-       r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(perm))
-       fd = int(r0)
-       errno = int(e1)
-       return
-}
-
 func Openat(dirfd int, path string, flags int, mode int) (fd int, errno int) {
        r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(flags), uintptr(mode), 0, 0)
        fd = int(r0)