aboutsummaryrefslogtreecommitdiff
path: root/libgo/runtime/signal_unix.c
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/runtime/signal_unix.c')
-rw-r--r--libgo/runtime/signal_unix.c10
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);
}