This patch to libgo fixes the context used by the getTraceback function. I passed the wrong context, and that error was hidden by the ucontext_arg function. This would have been caught by some of the runtime package tests, but we don't run most of them because they rely on `go build`, and the go tool is not available while running the libgo testsuite. We should fix the gccgo testsuite, somehow, so that they run. Bootstrapped and ran Go tests on x86_64-pc-linux-gnu. Committed to mainline.
Ian
Index: gcc/go/gofrontend/MERGE =================================================================== --- gcc/go/gofrontend/MERGE (revision 244889) +++ gcc/go/gofrontend/MERGE (working copy) @@ -1,4 +1,4 @@ -5c6c93f58e2aaae186bac5dcde9df1679d4896b1 +f8c451ed42fd71b85afab54a33fc321df0ff3b0b The first line of this file holds the git revision number of the last merge done from the gofrontend repository. Index: libgo/runtime/proc.c =================================================================== --- libgo/runtime/proc.c (revision 244945) +++ libgo/runtime/proc.c (working copy) @@ -631,7 +631,7 @@ void getTraceback(G* me, G* gp) #ifdef USING_SPLIT_STACK __splitstack_getcontext(&me->stackcontext[0]); #endif - getcontext(ucontext_arg(&me->stackcontext[0])); + getcontext(ucontext_arg(&me->context[0])); if (gp->traceback != nil) { runtime_gogo(gp);