diff options
author | Cherry Zhang <cherryyz@google.com> | 2020-10-07 18:26:26 -0400 |
---|---|---|
committer | Cherry Zhang <cherryyz@google.com> | 2020-10-08 23:14:40 +0000 |
commit | 23e9e0c7f09bb50a870cbd1a2543a33df49b37b6 (patch) | |
tree | 327cf7e671f36cdb525cd42201fa925d11c62644 /src/syscall | |
parent | 9e0837f2e9967b883bebf4b8928108d9199ae677 (diff) | |
download | go-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.go | 14 | ||||
-rw-r--r-- | src/syscall/zsyscall_darwin_arm64.go | 16 | ||||
-rw-r--r-- | src/syscall/zsyscall_darwin_arm64.s | 2 |
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) |