Ian, > It's possible that this patch will once again break the Solaris and Irix > support. I've tried to ensure that I didn't make any stupid errors, but > I haven't done any actual testing. Sorry about any problems.
it did (as expected :-), but in easy to fix ways (at least for getting libgo to compile again): * go/syscall/wait.c doesn't compile on Solaris (cannot test IRIX right now since bootstrap is broken): /vol/gcc/src/hg/trunk/local/libgo/go/syscall/wait.c: In function 'TrapCause': /vol/gcc/src/hg/trunk/local/libgo/go/syscall/wait.c:98:22: error: unused parameter 'w' [-Werror=unused-parameter] I'm marking the arg as unused to work around this since including it in #ifndef __linux__ seemed uglier. I'll check if I can find the trap cause from the wait status, but a quick check of Solaris manpages and headers found nothing (at least not via wait* functions). * sys/syscall/exec_unix.go doesn't compile either: /vol/gcc/src/hg/trunk/local/libgo/go/syscall/exec_unix.go:163:21: error: reference to undefined name '_PTRACE_TRACEME' forkAndExecInChild uses _PTRACE_TRACEME, but mksysinfo only emitted PTRACE_TRACEME if _PTRACE_TRACEME is missing. Unfortunately, testsuite results are a mess: all link tests fail like this: Undefined first referenced symbol in file flock /var/gcc/regression/trunk/10-gcc/build/i386-pc-solaris2.10/libgo/.libs/libgo.so ld: fatal: symbol referencing errors. No output written to a.out collect2: error: ld returned 1 exit status FAIL: asn1 The 64-bit tests are even worse: Undefined first referenced symbol in file flock /var/gcc/regression/trunk/10-gcc/build/i386-pc-solaris2.10/amd64/libgo/.libs/libgo.so ptrace /var/gcc/regression/trunk/10-gcc/build/i386-pc-solaris2.10/amd64/libgo/.libs/libgo.so ld: fatal: symbol referencing errors. No output written to a.out collect2: error: ld returned 1 exit status FAIL: asn1 I've not yet checked how to avoid this, but at least the ptrace stuff worked (as in: didn't try to use 64-bit ptrace which doesn't exist) before. Rainer 2011-10-25 Rainer Orth <r...@cebitec.uni-bielefeld.de> libgo: * go/syscall/wait.c (TrapCause): Declare w unused. * mksysinfo.sh: Emit _PTRACE_TRACEME if missing. diff --git a/libgo/go/syscall/wait.c b/libgo/go/syscall/wait.c --- a/libgo/go/syscall/wait.c +++ b/libgo/go/syscall/wait.c @@ -95,7 +95,7 @@ extern int TrapCause (uint32_t *w) __asm__ ("libgo_syscall.syscall.TrapCause.N32_libgo_syscall.syscall.WaitStatus"); int -TrapCause (uint32_t *w) +TrapCause (uint32_t *w __attribute__ ((unused))) { #ifndef __linux__ return -1; diff --git a/libgo/mksysinfo.sh b/libgo/mksysinfo.sh --- a/libgo/mksysinfo.sh +++ b/libgo/mksysinfo.sh @@ -251,7 +251,7 @@ if ! grep '^const PTRACE_EVENT_EXIT' ${O echo "const PTRACE_EVENT_EXIT = 6" >> ${OUT} fi if ! grep '^const _PTRACE_TRACEME' ${OUT} > /dev/null 2>&1; then - echo "const PTRACE_TRACEME = 0" >> ${OUT} + echo "const _PTRACE_TRACEME = 0" >> ${OUT} fi # The registers returned by PTRACE_GETREGS. This is probably -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University