/* (c) copyright 1988 by the Vrije Universiteit, Amsterdam, The Netherlands. See the copyright notice in the ACK home directory, in the file "Copyright". */ /* Module: initialization and some global vars Author: Ceriel J.H. Jacobs Version: $Id$ */ #include #include #include #include "libm2.h" 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 }; /* map unix signals onto EM traps */ void init(void) { const char* p = signals_list; do { int i = *p++; if (i == -1) break; sigtrp(M2_UNIXSIG, i); } while (1); sigtrp(EILLINS, SIGILL); #ifdef SIGSYS sigtrp(EBADMON, SIGSYS); #endif } #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; int argc = 0; char* MainLB = 0;