syscall: only compile ptrace varargs shim on Linux

Only compile the __go_ptrace varargs shim on Linux to avoid compilation
failures on some other platforms. The C ptrace function is not entirely
portable (e.g., NetBSD has `int data` instead of `void* data`), and so
far Linux is the only platform that needs the varargs shim.

Additionally, make the types in the ptrace and raw_ptrace function
declarations match. This makes it more clear that the only difference
between the two is that calls via the former are allowed to block while
calls via the latter are not.

Change-Id: Ib589ffd504e12440b726490c0a212d9ba570eb2c
Reviewed-by: Ian Lance Taylor <>
Trust: Benny Siegert <>
13 files changed