aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/syscall/exec_libc2.go9
-rwxr-xr-xsrc/syscall/mksyscall.pl6
-rw-r--r--src/syscall/zsyscall_darwin_amd64.go1
-rw-r--r--src/syscall/zsyscall_darwin_arm64.go1
-rw-r--r--src/syscall/zsyscall_openbsd_386.go1
-rw-r--r--src/syscall/zsyscall_openbsd_amd64.go1
-rw-r--r--src/syscall/zsyscall_openbsd_arm.go1
-rw-r--r--src/syscall/zsyscall_openbsd_arm64.go1
-rw-r--r--src/syscall/zsyscall_openbsd_ppc64.go1
-rw-r--r--src/syscall/zsyscall_openbsd_riscv64.go1
10 files changed, 6 insertions, 17 deletions
diff --git a/src/syscall/exec_libc2.go b/src/syscall/exec_libc2.go
index a0579627a3..5de09dfe99 100644
--- a/src/syscall/exec_libc2.go
+++ b/src/syscall/exec_libc2.go
@@ -59,7 +59,6 @@ func forkAndExecInChild(argv0 *byte, argv, envv []*byte, chroot, dir *byte, attr
r1 uintptr
nextfd int
i int
- err error
pgrp _C_int
cred *Credential
ngroups, groups uintptr
@@ -99,8 +98,12 @@ func forkAndExecInChild(argv0 *byte, argv, envv []*byte, chroot, dir *byte, attr
// Enable tracing if requested.
if sys.Ptrace {
- if err = ptrace(PTRACE_TRACEME, 0, 0, 0); err != nil {
- err1 = err.(Errno)
+ if runtime.GOOS == "ios" {
+ err1 = ENOSYS
+ goto childerror
+ }
+ _, _, err1 = rawSyscall6(abi.FuncPCABI0(libc_ptrace_trampoline), PTRACE_TRACEME, 0, 0, 0, 0, 0)
+ if err1 != 0 {
goto childerror
}
}
diff --git a/src/syscall/mksyscall.pl b/src/syscall/mksyscall.pl
index b46a3f9438..6be94c9c44 100755
--- a/src/syscall/mksyscall.pl
+++ b/src/syscall/mksyscall.pl
@@ -141,12 +141,6 @@ while(<>) {
# without reading the header.
$text .= "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n";
- if ((($darwin || ($openbsd && $libc)) && $func =~ /^ptrace(Ptr)?$/)) {
- # The ptrace function is called from forkAndExecInChild where stack
- # growth is forbidden.
- $text .= "//go:nosplit\n"
- }
-
# Go function header.
my $out_decl = @out ? sprintf(" (%s)", join(', ', @out)) : "";
$text .= sprintf "func %s(%s)%s {\n", $func, join(', ', @in), $out_decl;
diff --git a/src/syscall/zsyscall_darwin_amd64.go b/src/syscall/zsyscall_darwin_amd64.go
index 8812fb12cd..fe4a264ed2 100644
--- a/src/syscall/zsyscall_darwin_amd64.go
+++ b/src/syscall/zsyscall_darwin_amd64.go
@@ -2011,7 +2011,6 @@ 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) {
if runtime.GOOS == "ios" {
panic("unimplemented")
diff --git a/src/syscall/zsyscall_darwin_arm64.go b/src/syscall/zsyscall_darwin_arm64.go
index 22b096349d..8fd7392d5b 100644
--- a/src/syscall/zsyscall_darwin_arm64.go
+++ b/src/syscall/zsyscall_darwin_arm64.go
@@ -2011,7 +2011,6 @@ 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) {
if runtime.GOOS == "ios" {
panic("unimplemented")
diff --git a/src/syscall/zsyscall_openbsd_386.go b/src/syscall/zsyscall_openbsd_386.go
index c8cf7f231b..d914e19da0 100644
--- a/src/syscall/zsyscall_openbsd_386.go
+++ b/src/syscall/zsyscall_openbsd_386.go
@@ -1839,7 +1839,6 @@ func libc_exit_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) {
_, _, e1 := syscall6(abi.FuncPCABI0(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
if e1 != 0 {
diff --git a/src/syscall/zsyscall_openbsd_amd64.go b/src/syscall/zsyscall_openbsd_amd64.go
index 9188756a87..5efe4cd868 100644
--- a/src/syscall/zsyscall_openbsd_amd64.go
+++ b/src/syscall/zsyscall_openbsd_amd64.go
@@ -1839,7 +1839,6 @@ func libc_exit_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) {
_, _, e1 := syscall6(abi.FuncPCABI0(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
if e1 != 0 {
diff --git a/src/syscall/zsyscall_openbsd_arm.go b/src/syscall/zsyscall_openbsd_arm.go
index ecdfa63672..db8ea482ef 100644
--- a/src/syscall/zsyscall_openbsd_arm.go
+++ b/src/syscall/zsyscall_openbsd_arm.go
@@ -1839,7 +1839,6 @@ func libc_exit_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) {
_, _, e1 := syscall6(abi.FuncPCABI0(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
if e1 != 0 {
diff --git a/src/syscall/zsyscall_openbsd_arm64.go b/src/syscall/zsyscall_openbsd_arm64.go
index d28d3c5e1e..673791c824 100644
--- a/src/syscall/zsyscall_openbsd_arm64.go
+++ b/src/syscall/zsyscall_openbsd_arm64.go
@@ -1839,7 +1839,6 @@ func libc_exit_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) {
_, _, e1 := syscall6(abi.FuncPCABI0(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
if e1 != 0 {
diff --git a/src/syscall/zsyscall_openbsd_ppc64.go b/src/syscall/zsyscall_openbsd_ppc64.go
index 0e6828bcaf..7e0dc88a4c 100644
--- a/src/syscall/zsyscall_openbsd_ppc64.go
+++ b/src/syscall/zsyscall_openbsd_ppc64.go
@@ -1839,7 +1839,6 @@ func libc_exit_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) {
_, _, e1 := syscall6(abi.FuncPCABI0(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
if e1 != 0 {
diff --git a/src/syscall/zsyscall_openbsd_riscv64.go b/src/syscall/zsyscall_openbsd_riscv64.go
index 920147074d..7b5a89ceac 100644
--- a/src/syscall/zsyscall_openbsd_riscv64.go
+++ b/src/syscall/zsyscall_openbsd_riscv64.go
@@ -1839,7 +1839,6 @@ func libc_exit_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) {
_, _, e1 := syscall6(abi.FuncPCABI0(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
if e1 != 0 {