diff options
Diffstat (limited to 'libgo/runtime/signal_unix.c')
-rw-r--r-- | libgo/runtime/signal_unix.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/libgo/runtime/signal_unix.c b/libgo/runtime/signal_unix.c index 2028933..5bee0d2 100644 --- a/libgo/runtime/signal_unix.c +++ b/libgo/runtime/signal_unix.c @@ -13,11 +13,16 @@ extern SigTab runtime_sigtab[]; void -runtime_initsig(void) +runtime_initsig(bool preinit) { int32 i; SigTab *t; + // For c-archive/c-shared this is called by go-libmain.c with + // preinit == true. + if(runtime_isarchive && !preinit) + return; + // First call: basic setup. for(i = 0; runtime_sigtab[i].sig != -1; i++) { t = &runtime_sigtab[i]; @@ -37,6 +42,9 @@ runtime_initsig(void) } } + if(runtime_isarchive && (t->flags&SigPanic) == 0) + continue; + t->flags |= SigHandling; runtime_setsig(i, runtime_sighandler, true); } |