- switch(exception) {
- case EXC_BAD_ACCESS:
- if (code == KERN_INVALID_ADDRESS)
- return SIGSEGV;
- else
- return SIGBUS;
-
- case EXC_BAD_INSTRUCTION:
- return SIGILL;
-
- case EXC_ARITHMETIC:
- return SIGFPE;
-
- case EXC_EMULATION:
- return SIGEMT;
-
- case EXC_SOFTWARE:
- switch (code) {
- case EXC_UNIX_BAD_SYSCALL:
- return SIGSYS;
- case EXC_UNIX_BAD_PIPE:
- return SIGPIPE;
- case EXC_UNIX_ABORT:
- return SIGABRT;
- case EXC_SOFT_SIGNAL:
- return SIGKILL;
- }
- break;