This libgo patch by Clément Chigot removes __go_ptrace on AIX. AIX ptrace syscalls doesn't have the same semantic than the glibc one. The syscall package is already handling it correctly so disable the new __go_ptrace C function for AIX. Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed to mainline.
Ian
763460e4776ce2d1ca2fe87678fc233f27f70e64 diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index f51dac55365..daa0d2d6177 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -6a7648c97c3e0cdbecbec7e760b30246521a6d90 +2357468ae9b071de0e2ebe6574d78572967b7183 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/libgo/runtime/go-varargs.c b/libgo/runtime/go-varargs.c index f9270a97bfd..9cb4a7e79bd 100644 --- a/libgo/runtime/go-varargs.c +++ b/libgo/runtime/go-varargs.c @@ -114,7 +114,9 @@ __go_syscall6(uintptr_t flag, uintptr_t a1, uintptr_t a2, uintptr_t a3, #endif -#ifdef HAVE_SYS_PTRACE_H +// AIX ptrace is really different from Linux ptrace. Let syscall +// package handles it. +#if defined(HAVE_SYS_PTRACE_H) && !defined(_AIX) // Despite documented appearances, this is actually implemented as // a variadic function within glibc.