I have committed a patch to update libgo to the weekly.2012-03-22 release. As usual, this e-mail only includes the changes to files specific go gccgo. Bootstrapped and ran Go testsuite on x86_64-unknown-linux-gnu. Committed to mainline and 4.7 branch.
Ian
diff -r 95129a2d27f4 libgo/MERGE --- a/libgo/MERGE Fri Mar 30 14:13:09 2012 -0700 +++ b/libgo/MERGE Fri Mar 30 14:50:01 2012 -0700 @@ -1,4 +1,4 @@ -3cdba7b0650c +bce220d03774 The first line of this file holds the Mercurial revision number of the last merge done from the master library sources. diff -r 95129a2d27f4 libgo/merge.sh --- a/libgo/merge.sh Fri Mar 30 14:13:09 2012 -0700 +++ b/libgo/merge.sh Fri Mar 30 14:50:01 2012 -0700 @@ -163,7 +163,7 @@ done done -runtime="chan.c cpuprof.c goc2c.c lock_futex.c lock_sema.c mcache.c mcentral.c mfinal.c mfixalloc.c mgc0.c mheap.c msize.c proc.c runtime.c runtime.h signal_unix.c malloc.h malloc.goc mprof.goc runtime1.goc sema.goc sigqueue.goc string.goc time.goc" +runtime="chan.c cpuprof.c lock_futex.c lock_sema.c mcache.c mcentral.c mfinal.c mfixalloc.c mgc0.c mheap.c msize.c proc.c runtime.c runtime.h signal_unix.c malloc.h malloc.goc mprof.goc runtime1.goc sema.goc sigqueue.goc string.goc time.goc" for f in $runtime; do merge_c $f $f done diff -r 95129a2d27f4 libgo/runtime/proc.c --- a/libgo/runtime/proc.c Fri Mar 30 14:13:09 2012 -0700 +++ b/libgo/runtime/proc.c Fri Mar 30 14:50:01 2012 -0700 @@ -966,6 +966,11 @@ } #endif + // Install signal handlers; after minit so that minit can + // prepare the thread to be able to handle the signals. + if(m == &runtime_m0) + runtime_initsig(); + schedule(nil); return nil; } diff -r 95129a2d27f4 libgo/runtime/runtime.c --- a/libgo/runtime/runtime.c Fri Mar 30 14:13:09 2012 -0700 +++ b/libgo/runtime/runtime.c Fri Mar 30 14:50:01 2012 -0700 @@ -74,7 +74,7 @@ runtime_panicstring(const char *s) { Eface err; - + if(runtime_m()->gcing) { runtime_printf("panic: %s\n", s); runtime_throw("panic during gc"); @@ -101,7 +101,7 @@ { String *s; int32 i; - + // for windows implementation see "os" package if(Windows) return; @@ -119,7 +119,7 @@ { String *s; int32 i, n; - + for(n=0; argv[argc+1+n] != 0; n++) ; @@ -195,8 +195,6 @@ runtime_check(void) { __go_register_gc_roots(&runtime_roots); - - runtime_initsig (); } int64