OSDN Git Service

syscall: Fix errno handling in syscall.Syscall and friends.
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 23 Mar 2012 18:41:28 +0000 (18:41 +0000)
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 23 Mar 2012 18:41:28 +0000 (18:41 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@185747 138bc75d-0d04-0410-961f-82ee72b054a4

libgo/go/syscall/syscall_unix.go

index e3c6629..d4bff9e 100644 (file)
@@ -31,6 +31,7 @@ const darwinAMD64 = runtime.GOOS == "darwin" && runtime.GOARCH == "amd64"
 // expects a 32-bit one.
 func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) {
        Entersyscall()
+       SetErrno(0)
        var r uintptr
        if unsafe.Sizeof(r) == 4 {
                r1 := c_syscall32(int32(trap), int32(a1), int32(a2), int32(a3), 0, 0, 0)
@@ -46,6 +47,7 @@ func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) {
 
 func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) {
        Entersyscall()
+       SetErrno(0)
        var r uintptr
        if unsafe.Sizeof(r) == 4 {
                r1 := c_syscall32(int32(trap), int32(a1), int32(a2), int32(a3),
@@ -63,6 +65,7 @@ func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
 
 func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) {
        var r uintptr
+       SetErrno(0)
        if unsafe.Sizeof(r) == 4 {
                r1 := c_syscall32(int32(trap), int32(a1), int32(a2), int32(a3), 0, 0, 0)
                r = uintptr(r1)
@@ -76,6 +79,7 @@ func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) {
 
 func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) {
        var r uintptr
+       SetErrno(0)
        if unsafe.Sizeof(r) == 4 {
                r1 := c_syscall32(int32(trap), int32(a1), int32(a2), int32(a3),
                        int32(a4), int32(a5), int32(a6))