Index: fusl/src/linux/ptrace.c |
diff --git a/fusl/src/linux/ptrace.c b/fusl/src/linux/ptrace.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..83b8022beefa8afc9abeb19dfc7e9bac35d605e8 |
--- /dev/null |
+++ b/fusl/src/linux/ptrace.c |
@@ -0,0 +1,25 @@ |
+#include <sys/ptrace.h> |
+#include <stdarg.h> |
+#include <unistd.h> |
+#include "syscall.h" |
+ |
+long ptrace(int req, ...) |
+{ |
+ va_list ap; |
+ pid_t pid; |
+ void *addr, *data, *addr2; |
+ long ret, result; |
+ |
+ va_start(ap, req); |
+ pid = va_arg(ap, pid_t); |
+ addr = va_arg(ap, void *); |
+ data = va_arg(ap, void *); |
+ addr2 = va_arg(ap, void *); |
+ va_end(ap); |
+ |
+ if (req-1U < 3) data = &result; |
+ ret = syscall(SYS_ptrace, req, pid, addr, data, addr2); |
+ |
+ if (ret < 0 || req-1U >= 3) return ret; |
+ return result; |
+} |