aboutsummaryrefslogtreecommitdiff
path: root/src/syscall
diff options
context:
space:
mode:
authorCherry Zhang <cherryyz@google.com>2020-10-07 18:26:26 -0400
committerCherry Zhang <cherryyz@google.com>2020-10-08 23:14:40 +0000
commit23e9e0c7f09bb50a870cbd1a2543a33df49b37b6 (patch)
tree327cf7e671f36cdb525cd42201fa925d11c62644 /src/syscall
parent9e0837f2e9967b883bebf4b8928108d9199ae677 (diff)
downloadgo-23e9e0c7f09bb50a870cbd1a2543a33df49b37b6.tar.gz
go-23e9e0c7f09bb50a870cbd1a2543a33df49b37b6.zip
syscall: support ptrace on macOS/ARM64
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>
Diffstat (limited to 'src/syscall')
-rw-r--r--src/syscall/syscall_darwin_arm64.go14
-rw-r--r--src/syscall/zsyscall_darwin_arm64.go16
-rw-r--r--src/syscall/zsyscall_darwin_arm64.s2
3 files changed, 22 insertions, 10 deletions
diff --git a/src/syscall/syscall_darwin_arm64.go b/src/syscall/syscall_darwin_arm64.go
index bd110f2e7f..c824f6d89d 100644
--- a/src/syscall/syscall_darwin_arm64.go
+++ b/src/syscall/syscall_darwin_arm64.go
@@ -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)
diff --git a/src/syscall/zsyscall_darwin_arm64.go b/src/syscall/zsyscall_darwin_arm64.go
index 0ff642eb25..7698b2503e 100644
--- a/src/syscall/zsyscall_darwin_arm64.go
+++ b/src/syscall/zsyscall_darwin_arm64.go
@@ -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"
diff --git a/src/syscall/zsyscall_darwin_arm64.s b/src/syscall/zsyscall_darwin_arm64.s
index 214851604a..0a8879d1c3 100644
--- a/src/syscall/zsyscall_darwin_arm64.s
+++ b/src/syscall/zsyscall_darwin_arm64.s
@@ -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)