aboutsummaryrefslogtreecommitdiff
path: root/libgo/runtime/go-varargs.c
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/runtime/go-varargs.c')
-rw-r--r--libgo/runtime/go-varargs.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/libgo/runtime/go-varargs.c b/libgo/runtime/go-varargs.c
index 2b186ef..f9270a9 100644
--- a/libgo/runtime/go-varargs.c
+++ b/libgo/runtime/go-varargs.c
@@ -18,6 +18,9 @@
#ifdef HAVE_SYS_SYSCALL_H
#include <sys/syscall.h>
#endif
+#ifdef HAVE_SYS_PTRACE_H
+#include <sys/ptrace.h>
+#endif
/* The syscall package calls C functions. The Go compiler can not
represent a C varargs functions. On some systems it's important
@@ -110,3 +113,16 @@ __go_syscall6(uintptr_t flag, uintptr_t a1, uintptr_t a2, uintptr_t a3,
}
#endif
+
+#ifdef HAVE_SYS_PTRACE_H
+
+// Despite documented appearances, this is actually implemented as
+// a variadic function within glibc.
+
+long
+__go_ptrace(int request, pid_t pid, uintptr_t addr, uintptr_t data)
+{
+ return ptrace (request, pid, addr, data);
+}
+
+#endif