This patch by Cherry Zhang changes the libgo runtime to install a SIGURG handler in c-archive mode. The precise stack scan uses SIGURG to trigger a stack scan, so we need to have Go signal handler installed for SIGURG. Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed to mainline.
Ian
Index: gcc/go/gofrontend/MERGE =================================================================== --- gcc/go/gofrontend/MERGE (revision 268158) +++ gcc/go/gofrontend/MERGE (working copy) @@ -1,4 +1,4 @@ -e3271f3e09337b951822ba5c596d8cfe3b94508e +d67c4bf0c42b79d54925ba8c5f23278ee6c3efb6 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. Index: libgo/go/runtime/signal_unix.go =================================================================== --- libgo/go/runtime/signal_unix.go (revision 268158) +++ libgo/go/runtime/signal_unix.go (working copy) @@ -142,8 +142,8 @@ func sigInstallGoHandler(sig uint32) boo } // When built using c-archive or c-shared, only install signal - // handlers for synchronous signals and SIGPIPE. - if (isarchive || islibrary) && t.flags&_SigPanic == 0 && sig != _SIGPIPE { + // handlers for synchronous signals, SIGPIPE, and SIGURG. + if (isarchive || islibrary) && t.flags&_SigPanic == 0 && sig != _SIGPIPE && sig != _SIGURG { return false }