ack/lang/m2/libm2/init.c

100 lines
1.5 KiB
C
Raw Normal View History

1988-04-29 14:38:36 +00:00
/*
(c) copyright 1988 by the Vrije Universiteit, Amsterdam, The Netherlands.
See the copyright notice in the ACK home directory, in the file "Copyright".
*/
1988-05-03 13:17:20 +00:00
/*
Module: initialization and some global vars
Author: Ceriel J.H. Jacobs
1994-06-24 14:02:31 +00:00
Version: $Id$
1988-05-03 13:17:20 +00:00
*/
1988-04-29 14:38:36 +00:00
#include <signal.h>
#include <em_abs.h>
#include <m2_traps.h>
#include "libm2.h"
1988-04-29 14:38:36 +00:00
static const char signals_list[] = {
#ifdef SIGHUP
SIGHUP,
#endif
#ifdef SIGINT
SIGINT,
#endif
#ifdef SIGQUIT
SIGQUIT,
#endif
#ifdef SIGTRAP
SIGTRAP,
#endif
#ifdef SIGIOT
SIGIOT,
#endif
#ifdef SIGEMT
SIGEMT,
#endif
#ifdef SIGFPE
SIGFPE,
#endif
#ifdef SIGBUS
SIGBUS,
#endif
#ifdef SIGSEGV
SIGSEGV,
#endif
#ifdef SIGPIPE
SIGPIPE,
#endif
#ifdef SIGALRM
SIGALRM,
#endif
#ifdef SIGTERM
SIGTERM,
#endif
-1
};
1988-04-29 14:38:36 +00:00
/* map unix signals onto EM traps */
void init(void)
1988-04-29 14:38:36 +00:00
{
const char* p = signals_list;
do
{
int i = *p++;
if (i == -1)
break;
sigtrp(M2_UNIXSIG, i);
} while (1);
1988-04-29 14:38:36 +00:00
sigtrp(EILLINS, SIGILL);
#ifdef SIGSYS
1988-04-29 14:38:36 +00:00
sigtrp(EBADMON, SIGSYS);
#endif
1988-04-29 14:38:36 +00:00
}
1991-09-04 15:49:34 +00:00
#if defined(__em22) || defined(__em24) || defined(__em44)
void killbss(void)
{
}
#else
static int blablabla; /* We cannot use end, because then also
bss allocated for the systemcall lib
would be overwritten. Lets hope that
this helps ...
*/
void killbss(void)
{
extern char* bkillbss;
register char* p = (char*)&bkillbss;
while (p < (char*)&blablabla)
*p++ = 0x66;
}
#endif
void (*handler)(int) = catch;
char** argv = 0;
1989-02-13 18:41:17 +00:00
int argc = 0;
char* MainLB = 0;