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