]> Cypherpunks repositories - gostls13.git/commitdiff
syscall: don't generate ptrace on iOS
authorCherry Zhang <cherryyz@google.com>
Mon, 21 Dec 2020 18:14:41 +0000 (13:14 -0500)
committerCherry Zhang <cherryyz@google.com>
Mon, 21 Dec 2020 21:48:47 +0000 (21:48 +0000)
May fix #43302.

Change-Id: I6b7ddf94495c4fa80cf8a50a38eef5f8b2872669
Reviewed-on: https://go-review.googlesource.com/c/go/+/279481
Trust: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/syscall/mksyscall.pl
src/syscall/ptrace_darwin.go [new file with mode: 0644]
src/syscall/ptrace_ios.go [new file with mode: 0644]
src/syscall/syscall_darwin_amd64.go
src/syscall/syscall_darwin_arm64.go
src/syscall/zsyscall_darwin_amd64.go
src/syscall/zsyscall_darwin_arm64.go

index 25b40d7ba23cff69f8875c4741df58583d586c24..7e2cedfb6c15b3e493d7cb9017ca8083c1d33c67 100755 (executable)
@@ -125,7 +125,7 @@ while(<>) {
        # without reading the header.
        $text .= "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n";
 
-       if ($darwin && $func eq "ptrace") {
+       if ($darwin && $func eq "ptrace1") {
                # The ptrace function is called from forkAndExecInChild where stack
                # growth is forbidden.
                $text .= "//go:nosplit\n"
diff --git a/src/syscall/ptrace_darwin.go b/src/syscall/ptrace_darwin.go
new file mode 100644 (file)
index 0000000..a873d82
--- /dev/null
@@ -0,0 +1,14 @@
+// Copyright 2020 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.
+
+// +build !ios
+
+package syscall
+
+// Nosplit because it is called from forkAndExecInChild.
+//
+//go:nosplit
+func ptrace(request int, pid int, addr uintptr, data uintptr) error {
+       return ptrace1(request, pid, addr, data)
+}
diff --git a/src/syscall/ptrace_ios.go b/src/syscall/ptrace_ios.go
new file mode 100644 (file)
index 0000000..2f61a88
--- /dev/null
@@ -0,0 +1,12 @@
+// Copyright 2020 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
+
+// Nosplit because it is called from forkAndExecInChild.
+//
+//go:nosplit
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+       panic("unimplemented")
+}
index 23a4e5f9962634ecb13d1abb21753ee9dea7dcb3..22ddb78ae5bd2504b3d7d536c064066dff41b93f 100644 (file)
@@ -21,7 +21,7 @@ func setTimeval(sec, usec int64) Timeval {
 //sys  Stat(path string, stat *Stat_t) (err error) = SYS_stat64
 //sys  Statfs(path string, stat *Statfs_t) (err error) = SYS_statfs64
 //sys   fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_fstatat64
-//sys   ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
+//sys   ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace
 
 func SetKevent(k *Kevent_t, fd, mode, flags int) {
        k.Ident = uint64(fd)
index c824f6d89d8392300d4e5d61010009fb000e0d98..ecb9ffff492cea3eec911be3d4c0e7dd883623cb 100644 (file)
@@ -21,7 +21,7 @@ func setTimeval(sec, usec int64) Timeval {
 //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)
-//sys  ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
+//sys  ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace
 
 func SetKevent(k *Kevent_t, fd, mode, flags int) {
        k.Ident = uint64(fd)
index 093739ebc77e7fa34ed793cbe76c39f049113d35..c246c3a2675ff2cb810e17bfce65966e408df7a4 100644 (file)
@@ -2091,7 +2091,7 @@ func libc_fstatat64_trampoline()
 // 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) {
+func ptrace1(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)
index 7698b2503e85e711593396d30c9b2a5912cd2d67..ede0091de2483ff64e7ae28a60d9c0695d784671 100644 (file)
@@ -2091,7 +2091,7 @@ func libc_fstatat_trampoline()
 // 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) {
+func ptrace1(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)