diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/pkg/os/os_test.go | 14 | ||||
-rwxr-xr-x | src/pkg/syscall/PORT | 1 | ||||
-rw-r--r-- | src/pkg/syscall/asm_darwin_386.s | 6 | ||||
-rw-r--r-- | src/pkg/syscall/asm_linux_386.s | 41 | ||||
-rwxr-xr-x | src/pkg/syscall/mksyscall | 12 | ||||
-rw-r--r-- | src/pkg/syscall/syscall_darwin.go | 8 | ||||
-rw-r--r-- | src/pkg/syscall/syscall_darwin_386.go | 2 | ||||
-rw-r--r-- | src/pkg/syscall/syscall_linux.go | 22 | ||||
-rw-r--r-- | src/pkg/syscall/syscall_linux_386.go | 28 | ||||
-rw-r--r-- | src/pkg/syscall/syscall_linux_amd64.go | 28 | ||||
-rw-r--r-- | src/pkg/syscall/types_linux.c | 6 | ||||
-rw-r--r-- | src/pkg/syscall/zsyscall_darwin_386.go | 17 | ||||
-rw-r--r-- | src/pkg/syscall/zsyscall_darwin_amd64.go | 14 | ||||
-rw-r--r-- | src/pkg/syscall/zsyscall_linux_386.go | 269 | ||||
-rw-r--r-- | src/pkg/syscall/zsyscall_linux_amd64.go | 286 | ||||
-rw-r--r-- | src/pkg/syscall/ztypes_linux_386.go | 31 |
16 files changed, 422 insertions, 363 deletions
diff --git a/src/pkg/os/os_test.go b/src/pkg/os/os_test.go index 9f3e833f3..6a132f343 100644 --- a/src/pkg/os/os_test.go +++ b/src/pkg/os/os_test.go @@ -61,7 +61,7 @@ func TestStat(t *testing.T) { } filesize := size("/etc/passwd", t); if dir.Size != filesize { - t.Error("size should be ", filesize, "; is", dir.Size); + t.Error("size should be", filesize, "; is", dir.Size); } } @@ -80,7 +80,7 @@ func TestFstat(t *testing.T) { } filesize := size("/etc/passwd", t); if dir.Size != filesize { - t.Error("size should be ", filesize, "; is", dir.Size); + t.Error("size should be", filesize, "; is", dir.Size); } } @@ -94,7 +94,7 @@ func TestLstat(t *testing.T) { } filesize := size("/etc/passwd", t); if dir.Size != filesize { - t.Error("size should be ", filesize, "; is", dir.Size); + t.Error("size should be", filesize, "; is", dir.Size); } } @@ -367,13 +367,13 @@ func TestChmod(t *testing.T) { func checkUidGid(t *testing.T, path string, uid, gid int) { dir, err := Stat(path); if err != nil { - t.Fatalf("Stat %q (looking for uid/gid %#o/%#o): %s", path, uid, gid, err); + t.Fatalf("Stat %q (looking for uid/gid %d/%d): %s", path, uid, gid, err); } if dir.Uid != uint32(uid) { - t.Errorf("Stat %q: uid %#o want %#o", path, dir.Uid, uid); + t.Errorf("Stat %q: uid %d want %d", path, dir.Uid, uid); } if dir.Gid != uint32(gid) { - t.Errorf("Stat %q: gid %#o want %#o", path, dir.Gid, uid); + t.Errorf("Stat %q: gid %d want %d", path, dir.Gid, gid); } } @@ -398,6 +398,7 @@ func TestChown(t *testing.T) { // Can't change uid unless root, but can try // changing the group id. First try our current group. gid := Getgid(); + t.Log("gid:", gid); if err = Chown(Path, -1, gid); err != nil { t.Fatalf("chown %s -1 %d: %s", Path, gid, err); } @@ -408,6 +409,7 @@ func TestChown(t *testing.T) { if err != nil { t.Fatalf("getgroups: %s", err); } + t.Log("groups: ", groups); for i, g := range groups { if err = Chown(Path, -1, g); err != nil { t.Fatalf("chown %s -1 %d: %s", Path, g, err); diff --git a/src/pkg/syscall/PORT b/src/pkg/syscall/PORT index f3addcdb0..2eb05920c 100755 --- a/src/pkg/syscall/PORT +++ b/src/pkg/syscall/PORT @@ -100,6 +100,7 @@ darwin_amd64) mkerrors="mkerrors" ;; linux_386) + mksyscall="mksyscall -l32" mksysnum="mksysnum_linux /usr/include/asm/unistd_32.h" mktypes="godefs -gsyscall -f-m32" ;; diff --git a/src/pkg/syscall/asm_darwin_386.s b/src/pkg/syscall/asm_darwin_386.s index a8ec5b00c..646851b7e 100644 --- a/src/pkg/syscall/asm_darwin_386.s +++ b/src/pkg/syscall/asm_darwin_386.s @@ -29,7 +29,7 @@ TEXT syscall·Syscall(SB),7,$0 RET ok: MOVL AX, 20(SP) // r1 - MOVL DX, 24(SP) // r2 ??? + MOVL DX, 24(SP) // r2 MOVL $0, 28(SP) // errno CALL sys·exitsyscall(SB) RET @@ -56,7 +56,7 @@ TEXT syscall·Syscall6(SB),7,$0 RET ok6: MOVL AX, 32(SP) // r1 - MOVL DX, 36(SP) // r2 ??? + MOVL DX, 36(SP) // r2 MOVL $0, 40(SP) // errno CALL sys·exitsyscall(SB) RET @@ -78,6 +78,6 @@ TEXT syscall·RawSyscall(SB),7,$0 RET ok1: MOVL AX, 20(SP) // r1 - MOVL DX, 24(SP) // r2 ??? + MOVL DX, 24(SP) // r2 MOVL $0, 28(SP) // errno RET diff --git a/src/pkg/syscall/asm_linux_386.s b/src/pkg/syscall/asm_linux_386.s index c6b01792d..638a31dbc 100644 --- a/src/pkg/syscall/asm_linux_386.s +++ b/src/pkg/syscall/asm_linux_386.s @@ -6,7 +6,7 @@ // System calls for 386, Linux // -// func Syscall(trap int64, a1, a2, a3 int64) (r1, r2, err int64); +// func Syscall(trap uintptr, a1, a2, a3 uintptr) (r1, r2, err uintptr); // Trap # in AX, args in BX CX DX SI DI, return in AX TEXT syscall·Syscall(SB),7,$0 @@ -33,6 +33,7 @@ ok: CALL sys·exitsyscall(SB) RET +// func Syscall6(trap uintptr, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr); // Actually Syscall5 but the rest of the code expects it to be named Syscall6. TEXT syscall·Syscall6(SB),7,$0 CALL sys·entersyscall(SB) @@ -59,6 +60,7 @@ ok6: CALL sys·exitsyscall(SB) RET +// func RawSyscall(trap uintptr, a1, a2, a3 uintptr) (r1, r2, err uintptr); TEXT syscall·RawSyscall(SB),7,$0 MOVL 4(SP), AX // syscall entry MOVL 8(SP), BX @@ -96,13 +98,42 @@ TEXT syscall·socketcall(SB),7,$0 INT $0x80 CMPL AX, $0xfffff001 JLS oksock - MOVL $-1, 28(SP) // n + MOVL $-1, 32(SP) // n NEGL AX - MOVL AX, 32(SP) // errno + MOVL AX, 36(SP) // errno CALL sys·exitsyscall(SB) RET oksock: - MOVL AX, 28(SP) // n - MOVL $0, 32(SP) // errno + MOVL AX, 32(SP) // n + MOVL $0, 36(SP) // errno + CALL sys·exitsyscall(SB) + RET + +#define SYS__LLSEEK 140 /* from zsysnum_linux_386.go */ +// func Seek(fd int, offset int64, whence int) (newoffset int64, errno int) +// Implemented in assembly to avoid allocation when +// taking the address of the return value newoffset. +// Underlying system call is +// llseek(int fd, int offhi, int offlo, int64 *result, int whence) +TEXT syscall·Seek(SB),7,$0 + CALL sys·entersyscall(SB) + MOVL $SYS__LLSEEK, AX // syscall entry + MOVL 4(SP), BX // fd + MOVL 12(SP), CX // offset-high + MOVL 8(SP), DX // offset-low + LEAL 20(SP), SI // result pointer + MOVL 16(SP), DI // whence + INT $0x80 + CMPL AX, $0xfffff001 + JLS okseek + MOVL $-1, 20(SP) // newoffset low + MOVL $-1, 24(SP) // newoffset high + NEGL AX + MOVL AX, 28(SP) // errno + CALL sys·exitsyscall(SB) + RET +okseek: + // system call filled in newoffset already + MOVL $0, 28(SP) // errno CALL sys·exitsyscall(SB) RET diff --git a/src/pkg/syscall/mksyscall b/src/pkg/syscall/mksyscall index 850fc1e3f..6a2c916cf 100755 --- a/src/pkg/syscall/mksyscall +++ b/src/pkg/syscall/mksyscall @@ -142,6 +142,18 @@ while(<>) { if($type eq "bool") { $reg = "$reg != 0"; } + if($type eq "int64" && $_32bit ne "") { + # 64-bit number in r1:r0 or r0:r1. + if($i+2 > @out) { + print STDERR "$ARGV:$.: not enough registers for int64 return\n"; + } + if($_32bit eq "big-endian") { + $reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i, $i+1); + } else { + $reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i+1, $i); + } + $i++; # loop will do another $i++ + } $text .= "\t$name = $type($reg);\n"; } diff --git a/src/pkg/syscall/syscall_darwin.go b/src/pkg/syscall/syscall_darwin.go index 011fc7a0f..8ea78c667 100644 --- a/src/pkg/syscall/syscall_darwin.go +++ b/src/pkg/syscall/syscall_darwin.go @@ -154,13 +154,6 @@ func Pipe(p []int) (errno int) { return; } -// TODO(rsc): How does 386 return an int64 newoffset? -//sys lseek(fd int, offset int64, whence int) (newoffset uintptr, errno int) -func Seek(fd int, offset int64, whence int) (newoffset int64, errno int) { - n, e := lseek(fd, offset, whence); - return int64(n), e; -} - func Sleep(ns int64) (errno int) { tv := NsecToTimeval(ns); return Select(0, nil, nil, nil, &tv); @@ -427,6 +420,7 @@ func Kevent(kq int, changes, events []Kevent_t, timeout *Timespec) (n int, errno //sys Rename(from string, to string) (errno int) //sys Revoke(path string) (errno int) //sys Rmdir(path string) (errno int) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, errno int) = SYS_LSEEK //sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (errno int) //sys Setegid(egid int) (errno int) //sys Seteuid(euid int) (errno int) diff --git a/src/pkg/syscall/syscall_darwin_386.go b/src/pkg/syscall/syscall_darwin_386.go index 5633d7c03..6792109d7 100644 --- a/src/pkg/syscall/syscall_darwin_386.go +++ b/src/pkg/syscall/syscall_darwin_386.go @@ -31,7 +31,7 @@ func NsecToTimeval(nsec int64) (tv Timeval) { return; } -//sys gettimeofday(tp *Timeval) (sec int64, usec int32, errno int) +//sys gettimeofday(tp *Timeval) (sec int32, usec int32, errno int) func Gettimeofday(tv *Timeval) (errno int) { // The tv passed to gettimeofday must be non-nil // but is otherwise unused. The answers come back diff --git a/src/pkg/syscall/syscall_linux.go b/src/pkg/syscall/syscall_linux.go index 50f3938d7..1c0a4f5db 100644 --- a/src/pkg/syscall/syscall_linux.go +++ b/src/pkg/syscall/syscall_linux.go @@ -66,8 +66,6 @@ func Getwd() (wd string, errno int) { return string(buf[0:n-1]), 0 } -//sys getgroups(n int, list *_Gid_t) (nn int, errno int) -//sys setgroups(n int, list *_Gid_t) (errno int) func Getgroups() (gids []int, errno int) { n, err := getgroups(0, nil); if err != 0 { @@ -380,7 +378,6 @@ func SetsockoptLinger(fd, level, opt int, l *Linger) (errno int) { //sys Adjtimex(buf *Timex) (state int, errno int) //sys Chdir(path string) (errno int) //sys Chmod(path string, mode int) (errno int) -//sys Chown(path string, uid int, gid int) (errno int) //sys Chroot(path string) (errno int) //sys Close(fd int) (errno int) //sys Creat(path string, mode int) (fd int, errno int) @@ -395,18 +392,12 @@ func SetsockoptLinger(fd, level, opt int, l *Linger) (errno int) { //sys Fchdir(fd int) (errno int) //sys Fchmod(fd int, mode int) (errno int) //sys Fchmodat(dirfd int, path string, mode int, flags int) (errno int) -//sys Fchown(fd int, uid int, gid int) (errno int) //sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (errno int) //sys fcntl(fd int, cmd int, arg int) (val int, errno int) //sys Fdatasync(fd int) (errno int) -//sys Fstat(fd int, stat *Stat_t) (errno int) -//sys Fstatfs(fd int, buf *Statfs_t) (errno int) //sys Fsync(fd int) (errno int) //sys Ftruncate(fd int, length int64) (errno int) //sys Getdents(fd int, buf []byte) (n int, errno int) = SYS_GETDENTS64 -//sys Getegid() (egid int) -//sys Geteuid() (euid int) -//sys Getgid() (gid int) //sys Getpgid(pid int) (pgid int, errno int) //sys Getpgrp() (pid int) //sys Getpid() (pid int) @@ -415,14 +406,11 @@ func SetsockoptLinger(fd, level, opt int, l *Linger) (errno int) { //sys Getrusage(who int, rusage *Rusage) (errno int) //sys Gettid() (tid int) //sys Gettimeofday(tv *Timeval) (errno int) -//sys Getuid() (uid int) //sys Ioperm(from int, num int, on int) (errno int) //sys Iopl(level int) (errno int) //sys Kill(pid int, sig int) (errno int) //sys Klogctl(typ int, buf []byte) (n int, errno int) = SYS_SYSLOG -//sys Lchown(path string, uid int, gid int) (errno int) //sys Link(oldpath string, newpath string) (errno int) -//sys Lstat(path string, stat *Stat_t) (errno int) //sys Mkdir(path string, mode int) (errno int) //sys Mkdirat(dirfd int, path string, mode int) (errno int) //sys Mknod(path string, mode int, dev int) (errno int) @@ -439,25 +427,15 @@ func SetsockoptLinger(fd, level, opt int, l *Linger) (errno int) { //sys Rename(oldpath string, newpath string) (errno int) //sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (errno int) //sys Rmdir(path string) (errno int) -//sys Seek(fd int, offset int64, whence int) (off int64, errno int) = SYS_LSEEK //sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, errno int) //sys Setdomainname(p []byte) (errno int) -//sys Setfsgid(gid int) (errno int) -//sys Setfsuid(uid int) (errno int) -//sys Setgid(gid int) (errno int) //sys Sethostname(p []byte) (errno int) //sys Setpgid(pid int, pgid int) (errno int) -//sys Setregid(rgid int, egid int) (errno int) -//sys Setresgid(rgid int, egid int, sgid int) (errno int) -//sys Setresuid(ruid int, euid int, suid int) (errno int) -//sys Setreuid(ruid int, euid int) (errno int) //sys Setrlimit(resource int, rlim *Rlimit) (errno int) //sys Setsid() (pid int) //sys Settimeofday(tv *Timeval) (errno int) //sys Setuid(uid int) (errno int) //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, errno int) -//sys Stat(path string, stat *Stat_t) (errno int) -//sys Statfs(path string, buf *Statfs_t) (errno int) //sys Symlink(oldpath string, newpath string) (errno int) //sys Sync() //sys SyncFileRange(fd int, off int64, n int64, flags int) (errno int) diff --git a/src/pkg/syscall/syscall_linux_386.go b/src/pkg/syscall/syscall_linux_386.go index 9bf3f9cf0..b41c60a55 100644 --- a/src/pkg/syscall/syscall_linux_386.go +++ b/src/pkg/syscall/syscall_linux_386.go @@ -34,6 +34,34 @@ func NsecToTimeval(nsec int64) (tv Timeval) { return; } +// 64-bit file system and 32-bit uid calls +// (386 default is 32-bit file system and 16-bit uid). +//sys Chown(path string, uid int, gid int) (errno int) = SYS_CHOWN32 +//sys Fchown(fd int, uid int, gid int) (errno int) = SYS_FCHOWN32 +//sys Fstat(fd int, stat *Stat_t) (errno int) = SYS_FSTAT64 +//sys Fstatfs(fd int, buf *Statfs_t) (errno int) = SYS_FSTATFS64 +//sys Getegid() (egid int) = SYS_GETEGID32 +//sys Geteuid() (euid int) = SYS_GETEUID32 +//sys Getgid() (gid int) = SYS_GETGID32 +//sys Getuid() (uid int) = SYS_GETUID32 +//sys Lchown(path string, uid int, gid int) (errno int) = SYS_LCHOWN32 +//sys Lstat(path string, stat *Stat_t) (errno int) = SYS_LSTAT64 +//sys Setfsgid(gid int) (errno int) = SYS_SETFSGID32 +//sys Setfsuid(uid int) (errno int) = SYS_SETFSUID32 +//sys Setgid(gid int) (errno int) = SYS_SETGID32 +//sys Setregid(rgid int, egid int) (errno int) = SYS_SETREGID32 +//sys Setresgid(rgid int, egid int, sgid int) (errno int) = SYS_SETRESGID32 +//sys Setresuid(ruid int, euid int, suid int) (errno int) = SYS_SETRESUID32 +//sys Setreuid(ruid int, euid int) (errno int) = SYS_SETREUID32 +//sys Stat(path string, stat *Stat_t) (errno int) = SYS_STAT64 +//sys Statfs(path string, buf *Statfs_t) (errno int) = SYS_STATFS64 +//sys getgroups(n int, list *_Gid_t) (nn int, errno int) = SYS_GETGROUPS32 +//sys setgroups(n int, list *_Gid_t) (errno int) = SYS_SETGROUPS32 + +// Underlying system call writes to newoffset via pointer. +// Implemented in assembly to avoid allocation. +func Seek(fd int, offset int64, whence int) (newoffset int64, errno int) + // On x86 Linux, all the socket calls go through an extra indirection, // I think because the 5-register system call interface can't handle // the 6-argument calls like sendto and recvfrom. Instead the diff --git a/src/pkg/syscall/syscall_linux_amd64.go b/src/pkg/syscall/syscall_linux_amd64.go index a2a58c35b..1792a098c 100644 --- a/src/pkg/syscall/syscall_linux_amd64.go +++ b/src/pkg/syscall/syscall_linux_amd64.go @@ -6,13 +6,35 @@ package syscall import "syscall" +//sys Chown(path string, uid int, gid int) (errno int) +//sys Fchown(fd int, uid int, gid int) (errno int) +//sys Fstat(fd int, stat *Stat_t) (errno int) +//sys Fstatfs(fd int, buf *Statfs_t) (errno int) +//sys Getegid() (egid int) +//sys Geteuid() (euid int) +//sys Getgid() (gid int) +//sys Getuid() (uid int) +//sys Lchown(path string, uid int, gid int) (errno int) +//sys Listen(s int, n int) (errno int) +//sys Lstat(path string, stat *Stat_t) (errno int) +//sys Seek(fd int, offset int64, whence int) (off int64, errno int) = SYS_LSEEK +//sys Setfsgid(gid int) (errno int) +//sys Setfsuid(uid int) (errno int) +//sys Setgid(gid int) (errno int) +//sys Setregid(rgid int, egid int) (errno int) +//sys Setresgid(rgid int, egid int, sgid int) (errno int) +//sys Setresuid(ruid int, euid int, suid int) (errno int) +//sys Setreuid(ruid int, euid int) (errno int) +//sys Shutdown(fd int, how int) (errno int) +//sys Stat(path string, stat *Stat_t) (errno int) +//sys Statfs(path string, buf *Statfs_t) (errno int) //sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int) //sys bind(s int, addr uintptr, addrlen _Socklen) (errno int) //sys connect(s int, addr uintptr, addrlen _Socklen) (errno int) -//sys socket(domain int, typ int, proto int) (fd int, errno int) +//sys getgroups(n int, list *_Gid_t) (nn int, errno int) +//sys setgroups(n int, list *_Gid_t) (errno int) //sys setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int) -//sys Listen(s int, n int) (errno int) -//sys Shutdown(fd int, how int) (errno int) +//sys socket(domain int, typ int, proto int) (fd int, errno int) func Getpagesize() int { return 4096 diff --git a/src/pkg/syscall/types_linux.c b/src/pkg/syscall/types_linux.c index 261772eac..40b36481f 100644 --- a/src/pkg/syscall/types_linux.c +++ b/src/pkg/syscall/types_linux.c @@ -6,8 +6,10 @@ Input to godefs. See PORT. */ -#define __DARWIN_UNIX03 0 -#define KERNEL +#define _LARGEFILE_SOURCE +#define _LARGEFILE64_SOURCE +#define _FILE_OFFSET_BITS 64 +#define _GNU_SOURCE #include <dirent.h> #include <fcntl.h> diff --git a/src/pkg/syscall/zsyscall_darwin_386.go b/src/pkg/syscall/zsyscall_darwin_386.go index 61f7c01db..6974c83bf 100644 --- a/src/pkg/syscall/zsyscall_darwin_386.go +++ b/src/pkg/syscall/zsyscall_darwin_386.go @@ -36,13 +36,6 @@ func pipe() (r int, w int, errno int) { return; } -func lseek(fd int, offset int64, whence int) (newoffset uintptr, errno int) { - r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset >> 32), uintptr(whence), 0, 0); - newoffset = uintptr(r0); - errno = int(e1); - return; -} - func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int) { r0, r1, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))); fd = int(r0); @@ -450,6 +443,12 @@ func Rmdir(path string) (errno int) { return; } +func Seek(fd int, offset int64, whence int) (newoffset int64, errno int) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset >> 32), uintptr(whence), 0, 0); + newoffset = int64(int64(r1)<<32 | int64(r0)); + return; +} + func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (errno int) { r0, r1, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0); errno = int(e1); @@ -612,9 +611,9 @@ func write(fd int, buf *byte, nbuf int) (n int, errno int) { return; } -func gettimeofday(tp *Timeval) (sec int64, usec int32, errno int) { +func gettimeofday(tp *Timeval) (sec int32, usec int32, errno int) { r0, r1, e1 := Syscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0); - sec = int64(r0); + sec = int32(r0); usec = int32(r1); errno = int(e1); return; diff --git a/src/pkg/syscall/zsyscall_darwin_amd64.go b/src/pkg/syscall/zsyscall_darwin_amd64.go index c8a0b10a7..e6b99916e 100644 --- a/src/pkg/syscall/zsyscall_darwin_amd64.go +++ b/src/pkg/syscall/zsyscall_darwin_amd64.go @@ -36,13 +36,6 @@ func pipe() (r int, w int, errno int) { return; } -func lseek(fd int, offset int64, whence int) (newoffset uintptr, errno int) { - r0, r1, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)); - newoffset = uintptr(r0); - errno = int(e1); - return; -} - func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int) { r0, r1, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))); fd = int(r0); @@ -450,6 +443,13 @@ func Rmdir(path string) (errno int) { return; } +func Seek(fd int, offset int64, whence int) (newoffset int64, errno int) { + r0, r1, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)); + newoffset = int64(r0); + errno = int(e1); + return; +} + func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (errno int) { r0, r1, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0); errno = int(e1); diff --git a/src/pkg/syscall/zsyscall_linux_386.go b/src/pkg/syscall/zsyscall_linux_386.go index ef323b088..6e82bbb1b 100644 --- a/src/pkg/syscall/zsyscall_linux_386.go +++ b/src/pkg/syscall/zsyscall_linux_386.go @@ -1,4 +1,4 @@ -// mksyscall syscall_linux.go syscall_linux_386.go +// mksyscall -l32 syscall_linux.go syscall_linux_386.go // MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT package syscall @@ -35,19 +35,6 @@ func Getcwd(buf []byte) (n int, errno int) { return; } -func getgroups(n int, list *_Gid_t) (nn int, errno int) { - r0, r1, e1 := Syscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0); - nn = int(r0); - errno = int(e1); - return; -} - -func setgroups(n int, list *_Gid_t) (errno int) { - r0, r1, e1 := Syscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0); - errno = int(e1); - return; -} - func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, errno int) { r0, r1, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0); wpid = int(r0); @@ -86,12 +73,6 @@ func Chmod(path string, mode int) (errno int) { return; } -func Chown(path string, uid int, gid int) (errno int) { - r0, r1, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid)); - errno = int(e1); - return; -} - func Chroot(path string) (errno int) { r0, r1, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0); errno = int(e1); @@ -182,12 +163,6 @@ func Fchmodat(dirfd int, path string, mode int, flags int) (errno int) { return; } -func Fchown(fd int, uid int, gid int) (errno int) { - r0, r1, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)); - errno = int(e1); - return; -} - func Fchownat(dirfd int, path string, uid int, gid int, flags int) (errno int) { r0, r1, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid), uintptr(flags), 0); errno = int(e1); @@ -207,18 +182,6 @@ func Fdatasync(fd int) (errno int) { return; } -func Fstat(fd int, stat *Stat_t) (errno int) { - r0, r1, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0); - errno = int(e1); - return; -} - -func Fstatfs(fd int, buf *Statfs_t) (errno int) { - r0, r1, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0); - errno = int(e1); - return; -} - func Fsync(fd int) (errno int) { r0, r1, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0); errno = int(e1); @@ -240,24 +203,6 @@ func Getdents(fd int, buf []byte) (n int, errno int) { return; } -func Getegid() (egid int) { - r0, r1, e1 := Syscall(SYS_GETEGID, 0, 0, 0); - egid = int(r0); - return; -} - -func Geteuid() (euid int) { - r0, r1, e1 := Syscall(SYS_GETEUID, 0, 0, 0); - euid = int(r0); - return; -} - -func Getgid() (gid int) { - r0, r1, e1 := Syscall(SYS_GETGID, 0, 0, 0); - gid = int(r0); - return; -} - func Getpgid(pid int) (pgid int, errno int) { r0, r1, e1 := Syscall(SYS_GETPGID, uintptr(pid), 0, 0); pgid = int(r0); @@ -307,12 +252,6 @@ func Gettimeofday(tv *Timeval) (errno int) { return; } -func Getuid() (uid int) { - r0, r1, e1 := Syscall(SYS_GETUID, 0, 0, 0); - uid = int(r0); - return; -} - func Ioperm(from int, num int, on int) (errno int) { r0, r1, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)); errno = int(e1); @@ -340,24 +279,12 @@ func Klogctl(typ int, buf []byte) (n int, errno int) { return; } -func Lchown(path string, uid int, gid int) (errno int) { - r0, r1, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid)); - errno = int(e1); - return; -} - func Link(oldpath string, newpath string) (errno int) { r0, r1, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0); errno = int(e1); return; } -func Lstat(path string, stat *Stat_t) (errno int) { - r0, r1, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0); - errno = int(e1); - return; -} - func Mkdir(path string, mode int) (errno int) { r0, r1, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0); errno = int(e1); @@ -468,13 +395,6 @@ func Rmdir(path string) (errno int) { return; } -func Seek(fd int, offset int64, whence int) (off int64, errno int) { - r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset >> 32), uintptr(whence), 0, 0); - off = int64(r0); - errno = int(e1); - return; -} - func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, errno int) { r0, r1, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0); n = int(r0); @@ -490,24 +410,6 @@ func Setdomainname(p []byte) (errno int) { return; } -func Setfsgid(gid int) (errno int) { - r0, r1, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0); - errno = int(e1); - return; -} - -func Setfsuid(uid int) (errno int) { - r0, r1, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0); - errno = int(e1); - return; -} - -func Setgid(gid int) (errno int) { - r0, r1, e1 := Syscall(SYS_SETGID, uintptr(gid), 0, 0); - errno = int(e1); - return; -} - func Sethostname(p []byte) (errno int) { var _p0 *byte; if len(p) > 0 { _p0 = &p[0]; } @@ -522,30 +424,6 @@ func Setpgid(pid int, pgid int) (errno int) { return; } -func Setregid(rgid int, egid int) (errno int) { - r0, r1, e1 := Syscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0); - errno = int(e1); - return; -} - -func Setresgid(rgid int, egid int, sgid int) (errno int) { - r0, r1, e1 := Syscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)); - errno = int(e1); - return; -} - -func Setresuid(ruid int, euid int, suid int) (errno int) { - r0, r1, e1 := Syscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)); - errno = int(e1); - return; -} - -func Setreuid(ruid int, euid int) (errno int) { - r0, r1, e1 := Syscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0); - errno = int(e1); - return; -} - func Setrlimit(resource int, rlim *Rlimit) (errno int) { r0, r1, e1 := Syscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0); errno = int(e1); @@ -572,20 +450,7 @@ func Setuid(uid int) (errno int) { func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, errno int) { r0, r1, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)); - n = int64(r0); - errno = int(e1); - return; -} - -func Stat(path string, stat *Stat_t) (errno int) { - r0, r1, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0); - errno = int(e1); - return; -} - -func Statfs(path string, buf *Statfs_t) (errno int) { - r0, r1, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(buf)), 0); - errno = int(e1); + n = int64(int64(r1)<<32 | int64(r0)); return; } @@ -614,8 +479,7 @@ func Sysinfo(info *Sysinfo_t) (errno int) { func Tee(rfd int, wfd int, len int, flags int) (n int64, errno int) { r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0); - n = int64(r0); - errno = int(e1); + n = int64(int64(r1)<<32 | int64(r0)); return; } @@ -716,5 +580,132 @@ func write(fd int, p *byte, np int) (n int, errno int) { return; } +func Chown(path string, uid int, gid int) (errno int) { + r0, r1, e1 := Syscall(SYS_CHOWN32, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid)); + errno = int(e1); + return; +} + +func Fchown(fd int, uid int, gid int) (errno int) { + r0, r1, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid)); + errno = int(e1); + return; +} + +func Fstat(fd int, stat *Stat_t) (errno int) { + r0, r1, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0); + errno = int(e1); + return; +} + +func Fstatfs(fd int, buf *Statfs_t) (errno int) { + r0, r1, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0); + errno = int(e1); + return; +} + +func Getegid() (egid int) { + r0, r1, e1 := Syscall(SYS_GETEGID32, 0, 0, 0); + egid = int(r0); + return; +} + +func Geteuid() (euid int) { + r0, r1, e1 := Syscall(SYS_GETEUID32, 0, 0, 0); + euid = int(r0); + return; +} + +func Getgid() (gid int) { + r0, r1, e1 := Syscall(SYS_GETGID32, 0, 0, 0); + gid = int(r0); + return; +} + +func Getuid() (uid int) { + r0, r1, e1 := Syscall(SYS_GETUID32, 0, 0, 0); + uid = int(r0); + return; +} + +func Lchown(path string, uid int, gid int) (errno int) { + r0, r1, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid)); + errno = int(e1); + return; +} + +func Lstat(path string, stat *Stat_t) (errno int) { + r0, r1, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0); + errno = int(e1); + return; +} + +func Setfsgid(gid int) (errno int) { + r0, r1, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0); + errno = int(e1); + return; +} + +func Setfsuid(uid int) (errno int) { + r0, r1, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0); + errno = int(e1); + return; +} + +func Setgid(gid int) (errno int) { + r0, r1, e1 := Syscall(SYS_SETGID32, uintptr(gid), 0, 0); + errno = int(e1); + return; +} + +func Setregid(rgid int, egid int) (errno int) { + r0, r1, e1 := Syscall(SYS_SETREGID32, uintptr(rgid), uintptr(egid), 0); + errno = int(e1); + return; +} + +func Setresgid(rgid int, egid int, sgid int) (errno int) { + r0, r1, e1 := Syscall(SYS_SETRESGID32, uintptr(rgid), uintptr(egid), uintptr(sgid)); + errno = int(e1); + return; +} + +func Setresuid(ruid int, euid int, suid int) (errno int) { + r0, r1, e1 := Syscall(SYS_SETRESUID32, uintptr(ruid), uintptr(euid), uintptr(suid)); + errno = int(e1); + return; +} + +func Setreuid(ruid int, euid int) (errno int) { + r0, r1, e1 := Syscall(SYS_SETREUID32, uintptr(ruid), uintptr(euid), 0); + errno = int(e1); + return; +} + +func Stat(path string, stat *Stat_t) (errno int) { + r0, r1, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0); + errno = int(e1); + return; +} + +func Statfs(path string, buf *Statfs_t) (errno int) { + r0, r1, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(buf)), 0); + errno = int(e1); + return; +} + +func getgroups(n int, list *_Gid_t) (nn int, errno int) { + r0, r1, e1 := Syscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0); + nn = int(r0); + errno = int(e1); + return; +} + +func setgroups(n int, list *_Gid_t) (errno int) { + r0, r1, e1 := Syscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0); + errno = int(e1); + return; +} + diff --git a/src/pkg/syscall/zsyscall_linux_amd64.go b/src/pkg/syscall/zsyscall_linux_amd64.go index 490ffc392..6d5c75385 100644 --- a/src/pkg/syscall/zsyscall_linux_amd64.go +++ b/src/pkg/syscall/zsyscall_linux_amd64.go @@ -35,19 +35,6 @@ func Getcwd(buf []byte) (n int, errno int) { return; } -func getgroups(n int, list *_Gid_t) (nn int, errno int) { - r0, r1, e1 := Syscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0); - nn = int(r0); - errno = int(e1); - return; -} - -func setgroups(n int, list *_Gid_t) (errno int) { - r0, r1, e1 := Syscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0); - errno = int(e1); - return; -} - func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, errno int) { r0, r1, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0); wpid = int(r0); @@ -86,12 +73,6 @@ func Chmod(path string, mode int) (errno int) { return; } -func Chown(path string, uid int, gid int) (errno int) { - r0, r1, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid)); - errno = int(e1); - return; -} - func Chroot(path string) (errno int) { r0, r1, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0); errno = int(e1); @@ -182,12 +163,6 @@ func Fchmodat(dirfd int, path string, mode int, flags int) (errno int) { return; } -func Fchown(fd int, uid int, gid int) (errno int) { - r0, r1, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)); - errno = int(e1); - return; -} - func Fchownat(dirfd int, path string, uid int, gid int, flags int) (errno int) { r0, r1, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid), uintptr(flags), 0); errno = int(e1); @@ -207,18 +182,6 @@ func Fdatasync(fd int) (errno int) { return; } -func Fstat(fd int, stat *Stat_t) (errno int) { - r0, r1, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0); - errno = int(e1); - return; -} - -func Fstatfs(fd int, buf *Statfs_t) (errno int) { - r0, r1, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0); - errno = int(e1); - return; -} - func Fsync(fd int) (errno int) { r0, r1, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0); errno = int(e1); @@ -240,24 +203,6 @@ func Getdents(fd int, buf []byte) (n int, errno int) { return; } -func Getegid() (egid int) { - r0, r1, e1 := Syscall(SYS_GETEGID, 0, 0, 0); - egid = int(r0); - return; -} - -func Geteuid() (euid int) { - r0, r1, e1 := Syscall(SYS_GETEUID, 0, 0, 0); - euid = int(r0); - return; -} - -func Getgid() (gid int) { - r0, r1, e1 := Syscall(SYS_GETGID, 0, 0, 0); - gid = int(r0); - return; -} - func Getpgid(pid int) (pgid int, errno int) { r0, r1, e1 := Syscall(SYS_GETPGID, uintptr(pid), 0, 0); pgid = int(r0); @@ -307,12 +252,6 @@ func Gettimeofday(tv *Timeval) (errno int) { return; } -func Getuid() (uid int) { - r0, r1, e1 := Syscall(SYS_GETUID, 0, 0, 0); - uid = int(r0); - return; -} - func Ioperm(from int, num int, on int) (errno int) { r0, r1, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)); errno = int(e1); @@ -340,24 +279,12 @@ func Klogctl(typ int, buf []byte) (n int, errno int) { return; } -func Lchown(path string, uid int, gid int) (errno int) { - r0, r1, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid)); - errno = int(e1); - return; -} - func Link(oldpath string, newpath string) (errno int) { r0, r1, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0); errno = int(e1); return; } -func Lstat(path string, stat *Stat_t) (errno int) { - r0, r1, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0); - errno = int(e1); - return; -} - func Mkdir(path string, mode int) (errno int) { r0, r1, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0); errno = int(e1); @@ -468,13 +395,6 @@ func Rmdir(path string) (errno int) { return; } -func Seek(fd int, offset int64, whence int) (off int64, errno int) { - r0, r1, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)); - off = int64(r0); - errno = int(e1); - return; -} - func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, errno int) { r0, r1, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0); n = int(r0); @@ -490,24 +410,6 @@ func Setdomainname(p []byte) (errno int) { return; } -func Setfsgid(gid int) (errno int) { - r0, r1, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0); - errno = int(e1); - return; -} - -func Setfsuid(uid int) (errno int) { - r0, r1, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0); - errno = int(e1); - return; -} - -func Setgid(gid int) (errno int) { - r0, r1, e1 := Syscall(SYS_SETGID, uintptr(gid), 0, 0); - errno = int(e1); - return; -} - func Sethostname(p []byte) (errno int) { var _p0 *byte; if len(p) > 0 { _p0 = &p[0]; } @@ -522,30 +424,6 @@ func Setpgid(pid int, pgid int) (errno int) { return; } -func Setregid(rgid int, egid int) (errno int) { - r0, r1, e1 := Syscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0); - errno = int(e1); - return; -} - -func Setresgid(rgid int, egid int, sgid int) (errno int) { - r0, r1, e1 := Syscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)); - errno = int(e1); - return; -} - -func Setresuid(ruid int, euid int, suid int) (errno int) { - r0, r1, e1 := Syscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)); - errno = int(e1); - return; -} - -func Setreuid(ruid int, euid int) (errno int) { - r0, r1, e1 := Syscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0); - errno = int(e1); - return; -} - func Setrlimit(resource int, rlim *Rlimit) (errno int) { r0, r1, e1 := Syscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0); errno = int(e1); @@ -577,18 +455,6 @@ func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n i return; } -func Stat(path string, stat *Stat_t) (errno int) { - r0, r1, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0); - errno = int(e1); - return; -} - -func Statfs(path string, buf *Statfs_t) (errno int) { - r0, r1, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(buf)), 0); - errno = int(e1); - return; -} - func Symlink(oldpath string, newpath string) (errno int) { r0, r1, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0); errno = int(e1); @@ -716,6 +582,139 @@ func write(fd int, p *byte, np int) (n int, errno int) { return; } +func Chown(path string, uid int, gid int) (errno int) { + r0, r1, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid)); + errno = int(e1); + return; +} + +func Fchown(fd int, uid int, gid int) (errno int) { + r0, r1, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)); + errno = int(e1); + return; +} + +func Fstat(fd int, stat *Stat_t) (errno int) { + r0, r1, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0); + errno = int(e1); + return; +} + +func Fstatfs(fd int, buf *Statfs_t) (errno int) { + r0, r1, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0); + errno = int(e1); + return; +} + +func Getegid() (egid int) { + r0, r1, e1 := Syscall(SYS_GETEGID, 0, 0, 0); + egid = int(r0); + return; +} + +func Geteuid() (euid int) { + r0, r1, e1 := Syscall(SYS_GETEUID, 0, 0, 0); + euid = int(r0); + return; +} + +func Getgid() (gid int) { + r0, r1, e1 := Syscall(SYS_GETGID, 0, 0, 0); + gid = int(r0); + return; +} + +func Getuid() (uid int) { + r0, r1, e1 := Syscall(SYS_GETUID, 0, 0, 0); + uid = int(r0); + return; +} + +func Lchown(path string, uid int, gid int) (errno int) { + r0, r1, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid)); + errno = int(e1); + return; +} + +func Listen(s int, n int) (errno int) { + r0, r1, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0); + errno = int(e1); + return; +} + +func Lstat(path string, stat *Stat_t) (errno int) { + r0, r1, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0); + errno = int(e1); + return; +} + +func Seek(fd int, offset int64, whence int) (off int64, errno int) { + r0, r1, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)); + off = int64(r0); + errno = int(e1); + return; +} + +func Setfsgid(gid int) (errno int) { + r0, r1, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0); + errno = int(e1); + return; +} + +func Setfsuid(uid int) (errno int) { + r0, r1, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0); + errno = int(e1); + return; +} + +func Setgid(gid int) (errno int) { + r0, r1, e1 := Syscall(SYS_SETGID, uintptr(gid), 0, 0); + errno = int(e1); + return; +} + +func Setregid(rgid int, egid int) (errno int) { + r0, r1, e1 := Syscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0); + errno = int(e1); + return; +} + +func Setresgid(rgid int, egid int, sgid int) (errno int) { + r0, r1, e1 := Syscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)); + errno = int(e1); + return; +} + +func Setresuid(ruid int, euid int, suid int) (errno int) { + r0, r1, e1 := Syscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)); + errno = int(e1); + return; +} + +func Setreuid(ruid int, euid int) (errno int) { + r0, r1, e1 := Syscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0); + errno = int(e1); + return; +} + +func Shutdown(fd int, how int) (errno int) { + r0, r1, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0); + errno = int(e1); + return; +} + +func Stat(path string, stat *Stat_t) (errno int) { + r0, r1, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0); + errno = int(e1); + return; +} + +func Statfs(path string, buf *Statfs_t) (errno int) { + r0, r1, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(buf)), 0); + errno = int(e1); + return; +} + func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int) { r0, r1, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))); fd = int(r0); @@ -735,27 +734,28 @@ func connect(s int, addr uintptr, addrlen _Socklen) (errno int) { return; } -func socket(domain int, typ int, proto int) (fd int, errno int) { - r0, r1, e1 := Syscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)); - fd = int(r0); +func getgroups(n int, list *_Gid_t) (nn int, errno int) { + r0, r1, e1 := Syscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0); + nn = int(r0); errno = int(e1); return; } -func setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int) { - r0, r1, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0); +func setgroups(n int, list *_Gid_t) (errno int) { + r0, r1, e1 := Syscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0); errno = int(e1); return; } -func Listen(s int, n int) (errno int) { - r0, r1, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0); +func setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int) { + r0, r1, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0); errno = int(e1); return; } -func Shutdown(fd int, how int) (errno int) { - r0, r1, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0); +func socket(domain int, typ int, proto int) (fd int, errno int) { + r0, r1, e1 := Syscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)); + fd = int(r0); errno = int(e1); return; } diff --git a/src/pkg/syscall/ztypes_linux_386.go b/src/pkg/syscall/ztypes_linux_386.go index c3a083762..9d4190133 100644 --- a/src/pkg/syscall/ztypes_linux_386.go +++ b/src/pkg/syscall/ztypes_linux_386.go @@ -163,8 +163,8 @@ type Rusage struct { } type Rlimit struct { - Cur uint32; - Max uint32; + Cur uint64; + Max uint64; } type _C_int int32 @@ -175,7 +175,7 @@ type Stat_t struct { Dev uint64; __pad1 uint16; Pad0 [2]byte; - Ino uint32; + __st_ino uint32; Mode uint32; Nlink uint32; Uid uint32; @@ -183,24 +183,23 @@ type Stat_t struct { Rdev uint64; __pad2 uint16; Pad1 [2]byte; - Size int32; + Size int64; Blksize int32; - Blocks int32; + Blocks int64; Atim Timespec; Mtim Timespec; Ctim Timespec; - __unused4 uint32; - __unused5 uint32; + Ino uint64; } type Statfs_t struct { Type int32; Bsize int32; - Blocks uint32; - Bfree uint32; - Bavail uint32; - Files uint32; - Ffree uint32; + Blocks uint64; + Bfree uint64; + Bavail uint64; + Files uint64; + Ffree uint64; Fsid [8]byte /* __fsid_t */; Namelen int32; Frsize int32; @@ -208,8 +207,8 @@ type Statfs_t struct { } type Dirent struct { - Ino uint32; - Off int32; + Ino uint64; + Off int64; Reclen uint16; Type uint8; Name [256]int8; @@ -254,7 +253,7 @@ type Linger struct { } type FdSet struct { - __fds_bits [32]int32; + Bits [32]int32; } type Sysinfo_t struct { @@ -280,7 +279,7 @@ type Utsname struct { Release [65]int8; Version [65]int8; Machine [65]int8; - __domainname [65]int8; + Domainname [65]int8; } type Ustat_t struct { |