]> Cypherpunks.ru repositories - gostls13.git/commitdiff
syscall: support ptrace on macOS/ARM64
authorCherry Zhang <cherryyz@google.com>
Wed, 7 Oct 2020 22:26:26 +0000 (18:26 -0400)
committerCherry Zhang <cherryyz@google.com>
Thu, 8 Oct 2020 23:14:40 +0000 (23:14 +0000)
Updates #38485.

Change-Id: I853966d934a8ee05cf62c7321f3e6271811d47b1
Reviewed-on: https://go-review.googlesource.com/c/go/+/260718
Trust: Cherry Zhang <cherryyz@google.com>
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/syscall/syscall_darwin_arm64.go
src/syscall/zsyscall_darwin_arm64.go
src/syscall/zsyscall_darwin_arm64.s

index bd110f2e7f2ebde35e2c45a5d7f5e158a41ce791..c824f6d89d8392300d4e5d61010009fb000e0d98 100644 (file)
@@ -7,11 +7,11 @@ package syscall
 import "unsafe"
 
 func setTimespec(sec, nsec int64) Timespec {
-       return Timespec{Sec: int64(sec), Nsec: int64(nsec)}
+       return Timespec{Sec: sec, Nsec: nsec}
 }
 
 func setTimeval(sec, usec int64) Timeval {
-       return Timeval{Sec: int64(sec), Usec: int32(usec)}
+       return Timeval{Sec: sec, Usec: int32(usec)}
 }
 
 //sys  Fstat(fd int, stat *Stat_t) (err error)
@@ -20,14 +20,8 @@ func setTimeval(sec, usec int64) Timeval {
 //sys  Lstat(path string, stat *Stat_t) (err error)
 //sys  Stat(path string, stat *Stat_t) (err error)
 //sys  Statfs(path string, stat *Statfs_t) (err error)
-//sys   fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
-
-// Marked nosplit because it is called from forkAndExecInChild where
-// stack growth is forbidden.
-//go:nosplit
-func ptrace(request int, pid int, addr uintptr, data uintptr) error {
-       return ENOTSUP
-}
+//sys  fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
+//sys  ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
 
 func SetKevent(k *Kevent_t, fd, mode, flags int) {
        k.Ident = uint64(fd)
index 0ff642eb2542252f2e9cd9b0d578c2fb56350d37..7698b2503e85e711593396d30c9b2a5912cd2d67 100644 (file)
@@ -2087,3 +2087,19 @@ func libc_fstatat_trampoline()
 
 //go:linkname libc_fstatat libc_fstatat
 //go:cgo_import_dynamic libc_fstatat fstatat "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+//go:nosplit
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+       _, _, e1 := syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func libc_ptrace_trampoline()
+
+//go:linkname libc_ptrace libc_ptrace
+//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib"
index 214851604a2fb4dd246c8e7f4aed4c664aa7b5ed..0a8879d1c36990f1c603ab87032089cc3ca8e803 100644 (file)
@@ -249,3 +249,5 @@ TEXT ·libc_statfs_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_statfs(SB)
 TEXT ·libc_fstatat_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_fstatat(SB)
+TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0
+       JMP     libc_ptrace(SB)