Patchwork [libgo] Provide libc_ptrace on Solaris 2/SPARC

login
register
mail settings
Submitter Ian Taylor
Date Jan. 14, 2011, 7:10 p.m.
Message ID <mcroc7jjo71.fsf@google.com>
Download mbox | patch
Permalink /patch/78993/
State New
Headers show

Comments

Ian Taylor - Jan. 14, 2011, 7:10 p.m.
Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> writes:

> 2011-01-14  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
>
> 	libgo:
> 	* syscalls/syscall_solaris_sparc.go (libc_ptrace): Define.
> 	* syscalls/syscall_solaris_sparc64.go (libc_ptrace): Likewise.

Thanks.  The errno handling wasn't quite right--assigning using :=
defines a new local variable.  In any case errno is not really a global
variable, at least not on GNU/Linux, and so assignments must use
SetErrno.  Committed as follows.

Ian

Patch

diff -r ce70ce87ae99 libgo/syscalls/syscall_solaris_amd64.go
--- a/libgo/syscalls/syscall_solaris_amd64.go	Fri Jan 14 10:46:09 2011 -0800
+++ b/libgo/syscalls/syscall_solaris_amd64.go	Fri Jan 14 11:09:00 2011 -0800
@@ -13,7 +13,7 @@ 
 
 // 64-bit ptrace(3C) doesn't exist
 func libc_ptrace(request int, pid Pid_t, addr uintptr, data *byte) int {
-	errno := ENOSYS
+	SetErrno(ENOSYS)
 	return -1
 }
 
diff -r ce70ce87ae99 libgo/syscalls/syscall_solaris_sparc.go
--- a/libgo/syscalls/syscall_solaris_sparc.go	Fri Jan 14 10:46:09 2011 -0800
+++ b/libgo/syscalls/syscall_solaris_sparc.go	Fri Jan 14 11:09:00 2011 -0800
@@ -1,7 +1,17 @@ 
-// syscall_solaris_sparc.go -- Solaris SPARC specific support
+// syscall_solaris_sparc.go -- Solaris/SPARC specific support
 
 // Copyright 2011 The Go Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
 package syscall
+
+import "unsafe"
+
+// FIXME: ptrace(3C) has this, but exec.go expects the next.
+//func libc_ptrace(request int, pid Pid_t, addr int, data int) int __asm__ ("ptrace")
+
+func libc_ptrace(request int, pid Pid_t, addr uintptr, data *byte) int __asm__ ("ptrace")
+
+var dummy *byte
+const sizeofPtr uintptr = uintptr(unsafe.Sizeof(dummy))
diff -r ce70ce87ae99 libgo/syscalls/syscall_solaris_sparc64.go
--- a/libgo/syscalls/syscall_solaris_sparc64.go	Fri Jan 14 10:46:09 2011 -0800
+++ b/libgo/syscalls/syscall_solaris_sparc64.go	Fri Jan 14 11:09:00 2011 -0800
@@ -1,7 +1,21 @@ 
-// syscall_solaris_v9.go -- Solaris sparc9v specific support
+// syscall_solaris_sparc64.go -- Solaris/SPARCV9 specific support
 
 // Copyright 2011 The Go Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
 package syscall
+
+import "unsafe"
+
+// FIXME: ptrace(3C) has this, but exec.go expects the next.
+//func libc_ptrace(request int, pid Pid_t, addr int, data int) int __asm__ ("ptrace")
+
+// 64-bit ptrace(3C) doesn't exist
+func libc_ptrace(request int, pid Pid_t, addr uintptr, data *byte) int {
+	SetErrno(ENOSYS)
+	return -1
+}
+
+var dummy *byte
+const sizeofPtr uintptr = uintptr(unsafe.Sizeof(dummy))