Commits

Anonymous committed aa2f44c

pkg/syscall: Plan 9, 64-bit: Update error checks from sys calls.

The system calls return 32-bit integers. With the recent change
in size of `int' in Go for amd64, the type conversion was not
catching `-1' return values. This change makes the conversion
explicitly `int32'.

R=rsc, rminnich, npe, r
CC=golang-dev
http://codereview.appspot.com/6576057

Committer: Rob Pike <r@golang.org>

  • Participants
  • Parent commits 49b2754

Comments (0)

Files changed (2)

src/pkg/syscall/mksyscall.pl

 	$text .= $body;
 	
 	if ($plan9 && $ret[2] eq "e1") {
-		$text .= "\tif int(r0) == -1 {\n";
+		$text .= "\tif int32(r0) == -1 {\n";
 		$text .= "\t\terr = e1\n";
 		$text .= "\t}\n";
 	} elsif ($do_errno) {

src/pkg/syscall/zsyscall_plan9_amd64.go

-// mksyscall.pl -l32 -plan9 syscall_plan9.go syscall_plan9_386.go
+// mksyscall.pl -l32 -plan9 syscall_plan9.go syscall_plan9_amd64.go
 // MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
 
 package syscall
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
-func exits(msg *byte) {
-	Syscall(SYS_EXITS, uintptr(unsafe.Pointer(msg)), 0, 0)
-	return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
 func fd2path(fd int, buf []byte) (err error) {
 	var _p0 unsafe.Pointer
 	if len(buf) > 0 {
 		_p0 = unsafe.Pointer(&_zero)
 	}
 	r0, _, e1 := Syscall(SYS_FD2PATH, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
-	if int(r0) == -1 {
+	if int32(r0) == -1 {
 		err = e1
 	}
 	return
 
 func pipe(p *[2]_C_int) (err error) {
 	r0, _, e1 := Syscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
-	if int(r0) == -1 {
+	if int32(r0) == -1 {
 		err = e1
 	}
 	return
 	}
 	r0, _, e1 := Syscall(SYS_AWAIT, uintptr(_p0), uintptr(len(s)), 0)
 	n = int(r0)
-	if int(r0) == -1 {
+	if int32(r0) == -1 {
 		err = e1
 	}
 	return
 func Dup(oldfd int, newfd int) (fd int, err error) {
 	r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), uintptr(newfd), 0)
 	fd = int(r0)
-	if int(r0) == -1 {
+	if int32(r0) == -1 {
 		err = e1
 	}
 	return
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
 func Open(path string, mode int) (fd int, err error) {
-	r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0)
+	var _p0 *byte
+	_p0, err = BytePtrFromString(path)
+	if err != nil {
+		return
+	}
+	r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
 	fd = int(r0)
-	if int(r0) == -1 {
+	if int32(r0) == -1 {
 		err = e1
 	}
 	return
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
 func Create(path string, mode int, perm uint32) (fd int, err error) {
-	r0, _, e1 := Syscall(SYS_CREATE, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(perm))
+	var _p0 *byte
+	_p0, err = BytePtrFromString(path)
+	if err != nil {
+		return
+	}
+	r0, _, e1 := Syscall(SYS_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
 	fd = int(r0)
-	if int(r0) == -1 {
+	if int32(r0) == -1 {
 		err = e1
 	}
 	return
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
 func Remove(path string) (err error) {
-	r0, _, e1 := Syscall(SYS_REMOVE, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0)
-	if int(r0) == -1 {
+	var _p0 *byte
+	_p0, err = BytePtrFromString(path)
+	if err != nil {
+		return
+	}
+	r0, _, e1 := Syscall(SYS_REMOVE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+	if int32(r0) == -1 {
 		err = e1
 	}
 	return
 	}
 	r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
 	n = int(r0)
-	if int(r0) == -1 {
+	if int32(r0) == -1 {
 		err = e1
 	}
 	return
 	}
 	r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
 	n = int(r0)
-	if int(r0) == -1 {
+	if int32(r0) == -1 {
 		err = e1
 	}
 	return
 
 func Close(fd int) (err error) {
 	r0, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-	if int(r0) == -1 {
+	if int32(r0) == -1 {
 		err = e1
 	}
 	return
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
 func Chdir(path string) (err error) {
-	r0, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0)
-	if int(r0) == -1 {
+	var _p0 *byte
+	_p0, err = BytePtrFromString(path)
+	if err != nil {
+		return
+	}
+	r0, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+	if int32(r0) == -1 {
 		err = e1
 	}
 	return
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
 func Bind(name string, old string, flag int) (err error) {
-	r0, _, e1 := Syscall(SYS_BIND, uintptr(unsafe.Pointer(StringBytePtr(name))), uintptr(unsafe.Pointer(StringBytePtr(old))), uintptr(flag))
-	if int(r0) == -1 {
+	var _p0 *byte
+	_p0, err = BytePtrFromString(name)
+	if err != nil {
+		return
+	}
+	var _p1 *byte
+	_p1, err = BytePtrFromString(old)
+	if err != nil {
+		return
+	}
+	r0, _, e1 := Syscall(SYS_BIND, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag))
+	if int32(r0) == -1 {
 		err = e1
 	}
 	return
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
 func Mount(fd int, afd int, old string, flag int, aname string) (err error) {
-	r0, _, e1 := Syscall6(SYS_MOUNT, uintptr(fd), uintptr(afd), uintptr(unsafe.Pointer(StringBytePtr(old))), uintptr(flag), uintptr(unsafe.Pointer(StringBytePtr(aname))), 0)
-	if int(r0) == -1 {
+	var _p0 *byte
+	_p0, err = BytePtrFromString(old)
+	if err != nil {
+		return
+	}
+	var _p1 *byte
+	_p1, err = BytePtrFromString(aname)
+	if err != nil {
+		return
+	}
+	r0, _, e1 := Syscall6(SYS_MOUNT, uintptr(fd), uintptr(afd), uintptr(unsafe.Pointer(_p0)), uintptr(flag), uintptr(unsafe.Pointer(_p1)), 0)
+	if int32(r0) == -1 {
 		err = e1
 	}
 	return
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
 func Stat(path string, edir []byte) (n int, err error) {
-	var _p0 unsafe.Pointer
+	var _p0 *byte
+	_p0, err = BytePtrFromString(path)
+	if err != nil {
+		return
+	}
+	var _p1 unsafe.Pointer
 	if len(edir) > 0 {
-		_p0 = unsafe.Pointer(&edir[0])
+		_p1 = unsafe.Pointer(&edir[0])
 	} else {
-		_p0 = unsafe.Pointer(&_zero)
+		_p1 = unsafe.Pointer(&_zero)
 	}
-	r0, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(_p0), uintptr(len(edir)))
+	r0, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(edir)))
 	n = int(r0)
-	if int(r0) == -1 {
+	if int32(r0) == -1 {
 		err = e1
 	}
 	return
 	}
 	r0, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(_p0), uintptr(len(edir)))
 	n = int(r0)
-	if int(r0) == -1 {
+	if int32(r0) == -1 {
 		err = e1
 	}
 	return
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
 func Wstat(path string, edir []byte) (err error) {
-	var _p0 unsafe.Pointer
+	var _p0 *byte
+	_p0, err = BytePtrFromString(path)
+	if err != nil {
+		return
+	}
+	var _p1 unsafe.Pointer
 	if len(edir) > 0 {
-		_p0 = unsafe.Pointer(&edir[0])
+		_p1 = unsafe.Pointer(&edir[0])
 	} else {
-		_p0 = unsafe.Pointer(&_zero)
+		_p1 = unsafe.Pointer(&_zero)
 	}
-	r0, _, e1 := Syscall(SYS_WSTAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(_p0), uintptr(len(edir)))
-	if int(r0) == -1 {
+	r0, _, e1 := Syscall(SYS_WSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(edir)))
+	if int32(r0) == -1 {
 		err = e1
 	}
 	return
 		_p0 = unsafe.Pointer(&_zero)
 	}
 	r0, _, e1 := Syscall(SYS_FWSTAT, uintptr(fd), uintptr(_p0), uintptr(len(edir)))
-	if int(r0) == -1 {
+	if int32(r0) == -1 {
 		err = e1
 	}
 	return