summaryrefslogtreecommitdiffstats
path: root/contrib/libf2c/libF77/setsig.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/libf2c/libF77/setsig.c')
-rw-r--r--contrib/libf2c/libF77/setsig.c86
1 files changed, 86 insertions, 0 deletions
diff --git a/contrib/libf2c/libF77/setsig.c b/contrib/libf2c/libF77/setsig.c
new file mode 100644
index 0000000..96826be
--- /dev/null
+++ b/contrib/libf2c/libF77/setsig.c
@@ -0,0 +1,86 @@
+/* Set up the signal behavior. */
+
+#include <stdio.h>
+#include "signal1.h"
+
+#ifndef SIGIOT
+#ifdef SIGABRT
+#define SIGIOT SIGABRT
+#endif
+#endif
+
+#include <stdlib.h>
+
+extern void sig_die (char *, int);
+
+static void
+sigfdie (Sigarg)
+{
+ Use_Sigarg;
+ sig_die ("Floating Exception", 1);
+}
+
+
+static void
+sigidie (Sigarg)
+{
+ Use_Sigarg;
+ sig_die ("IOT Trap", 1);
+}
+
+#ifdef SIGQUIT
+static void
+sigqdie (Sigarg)
+{
+ Use_Sigarg;
+ sig_die ("Quit signal", 1);
+}
+#endif
+
+
+static void
+sigindie (Sigarg)
+{
+ Use_Sigarg;
+ sig_die ("Interrupt", 0);
+}
+
+static void
+sigtdie (Sigarg)
+{
+ Use_Sigarg;
+ sig_die ("Killed", 0);
+}
+
+#ifdef SIGTRAP
+static void
+sigtrdie (Sigarg)
+{
+ Use_Sigarg;
+ sig_die ("Trace trap", 1);
+}
+#endif
+
+
+void
+f_setsig ()
+{
+ signal1 (SIGFPE, sigfdie); /* ignore underflow, enable overflow */
+#ifdef SIGIOT
+ signal1 (SIGIOT, sigidie);
+#endif
+#ifdef SIGTRAP
+ signal1 (SIGTRAP, sigtrdie);
+#endif
+#ifdef SIGQUIT
+ if (signal1 (SIGQUIT, sigqdie) == SIG_IGN)
+ signal1 (SIGQUIT, SIG_IGN);
+#endif
+ if (signal1 (SIGINT, sigindie) == SIG_IGN)
+ signal1 (SIGINT, SIG_IGN);
+ signal1 (SIGTERM, sigtdie);
+
+#ifdef pdp11
+ ldfps (01200); /* detect overflow as an exception */
+#endif
+}
OpenPOWER on IntegriCloud