1*af245d11STodd Fiala //===-- LinuxSignals.cpp ----------------------------------------*- C++ -*-===// 2*af245d11STodd Fiala // 3*af245d11STodd Fiala // The LLVM Compiler Infrastructure 4*af245d11STodd Fiala // 5*af245d11STodd Fiala // This file is distributed under the University of Illinois Open Source 6*af245d11STodd Fiala // License. See LICENSE.TXT for details. 7*af245d11STodd Fiala // 8*af245d11STodd Fiala //===----------------------------------------------------------------------===// 9*af245d11STodd Fiala 10*af245d11STodd Fiala // C Includes 11*af245d11STodd Fiala #include <signal.h> 12*af245d11STodd Fiala 13*af245d11STodd Fiala // C++ Includes 14*af245d11STodd Fiala // Other libraries and framework includes 15*af245d11STodd Fiala // Project includes 16*af245d11STodd Fiala #include "LinuxSignals.h" 17*af245d11STodd Fiala 18*af245d11STodd Fiala using namespace process_linux; 19*af245d11STodd Fiala 20*af245d11STodd Fiala LinuxSignals::LinuxSignals() 21*af245d11STodd Fiala : UnixSignals() 22*af245d11STodd Fiala { 23*af245d11STodd Fiala Reset(); 24*af245d11STodd Fiala } 25*af245d11STodd Fiala 26*af245d11STodd Fiala void 27*af245d11STodd Fiala LinuxSignals::Reset() 28*af245d11STodd Fiala { 29*af245d11STodd Fiala m_signals.clear(); 30*af245d11STodd Fiala 31*af245d11STodd Fiala // FIXME we now need *Signals classes on systems that are different OSes (e.g. LinuxSignals 32*af245d11STodd Fiala // needed on MacOSX to debug Linux from MacOSX, and similar scenarios, used by ProcessGDBRemote). These must be defined 33*af245d11STodd Fiala // not based on OS includes and defines. 34*af245d11STodd Fiala 35*af245d11STodd Fiala #define ADDSIGNAL(S, SUPPRESS, STOP, NOTIFY, DESCRIPTION) \ 36*af245d11STodd Fiala AddSignal(SIG ## S, "SIG" #S, #S, SUPPRESS, STOP, NOTIFY, DESCRIPTION) 37*af245d11STodd Fiala 38*af245d11STodd Fiala ADDSIGNAL(HUP, false, true, true, "hangup"); 39*af245d11STodd Fiala ADDSIGNAL(INT, true, true, true, "interrupt"); 40*af245d11STodd Fiala ADDSIGNAL(QUIT, false, true, true, "quit"); 41*af245d11STodd Fiala ADDSIGNAL(ILL, false, true, true, "illegal instruction"); 42*af245d11STodd Fiala ADDSIGNAL(TRAP, true, true, true, "trace trap (not reset when caught)"); 43*af245d11STodd Fiala ADDSIGNAL(ABRT, false, true, true, "abort"); 44*af245d11STodd Fiala ADDSIGNAL(IOT, false, true, true, "abort"); 45*af245d11STodd Fiala ADDSIGNAL(BUS, false, true, true, "bus error"); 46*af245d11STodd Fiala ADDSIGNAL(FPE, false, true, true, "floating point exception"); 47*af245d11STodd Fiala ADDSIGNAL(KILL, false, true, true, "kill"); 48*af245d11STodd Fiala ADDSIGNAL(USR1, false, true, true, "user defined signal 1"); 49*af245d11STodd Fiala ADDSIGNAL(SEGV, false, true, true, "segmentation violation"); 50*af245d11STodd Fiala ADDSIGNAL(USR2, false, true, true, "user defined signal 2"); 51*af245d11STodd Fiala ADDSIGNAL(PIPE, false, true, true, "write to pipe with reading end closed"); 52*af245d11STodd Fiala ADDSIGNAL(ALRM, false, false, true, "alarm"); 53*af245d11STodd Fiala ADDSIGNAL(TERM, false, true, true, "termination requested"); 54*af245d11STodd Fiala #ifdef SIGSTKFLT 55*af245d11STodd Fiala ADDSIGNAL(STKFLT, false, true, true, "stack fault"); 56*af245d11STodd Fiala #endif 57*af245d11STodd Fiala ADDSIGNAL(CHLD, false, false, true, "child process exit"); 58*af245d11STodd Fiala ADDSIGNAL(CONT, false, true, true, "process continue"); 59*af245d11STodd Fiala ADDSIGNAL(STOP, true, true, true, "process stop"); 60*af245d11STodd Fiala ADDSIGNAL(TSTP, false, true, true, "tty stop"); 61*af245d11STodd Fiala ADDSIGNAL(TTIN, false, true, true, "background tty read"); 62*af245d11STodd Fiala ADDSIGNAL(TTOU, false, true, true, "background tty write"); 63*af245d11STodd Fiala ADDSIGNAL(URG, false, true, true, "urgent data on socket"); 64*af245d11STodd Fiala ADDSIGNAL(XCPU, false, true, true, "CPU resource exceeded"); 65*af245d11STodd Fiala ADDSIGNAL(XFSZ, false, true, true, "file size limit exceeded"); 66*af245d11STodd Fiala ADDSIGNAL(VTALRM, false, true, true, "virtual alarm"); 67*af245d11STodd Fiala ADDSIGNAL(PROF, false, true, true, "profiling alarm"); 68*af245d11STodd Fiala ADDSIGNAL(WINCH, false, true, true, "window size change"); 69*af245d11STodd Fiala #ifdef SIGPOLL 70*af245d11STodd Fiala ADDSIGNAL(POLL, false, true, true, "pollable event"); 71*af245d11STodd Fiala #endif 72*af245d11STodd Fiala ADDSIGNAL(IO, false, true, true, "input/output ready"); 73*af245d11STodd Fiala #ifdef SIGPWR 74*af245d11STodd Fiala ADDSIGNAL(PWR, false, true, true, "power failure"); 75*af245d11STodd Fiala #endif 76*af245d11STodd Fiala ADDSIGNAL(SYS, false, true, true, "invalid system call"); 77*af245d11STodd Fiala 78*af245d11STodd Fiala #undef ADDSIGNAL 79*af245d11STodd Fiala } 80