1 //===-- LinuxSignals.cpp --------------------------------------------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #include "LinuxSignals.h" 10 11 using namespace lldb_private; 12 13 LinuxSignals::LinuxSignals() : UnixSignals() { Reset(); } 14 15 void LinuxSignals::Reset() { 16 m_signals.clear(); 17 // clang-format off 18 // SIGNO NAME SUPPRESS STOP NOTIFY DESCRIPTION 19 // ====== ============== ======== ====== ====== =================================================== 20 AddSignal(1, "SIGHUP", false, true, true, "hangup"); 21 AddSignal(2, "SIGINT", true, true, true, "interrupt"); 22 AddSignal(3, "SIGQUIT", false, true, true, "quit"); 23 24 AddSignal(4, "SIGILL", false, true, true, "illegal instruction"); 25 AddSignalCode(4, 1 /*ILL_ILLOPC*/, "illegal opcode"); 26 AddSignalCode(4, 2 /*ILL_ILLOPN*/, "illegal operand"); 27 AddSignalCode(4, 3 /*ILL_ILLADR*/, "illegal addressing mode"); 28 AddSignalCode(4, 4 /*ILL_ILLTRP*/, "illegal trap"); 29 AddSignalCode(4, 5 /*ILL_PRVOPC*/, "privileged opcode"); 30 AddSignalCode(4, 6 /*ILL_PRVREG*/, "privileged register"); 31 AddSignalCode(4, 7 /*ILL_COPROC*/, "coprocessor error"); 32 AddSignalCode(4, 8 /*ILL_BADSTK*/, "internal stack error"); 33 34 AddSignal(5, "SIGTRAP", true, true, true, "trace trap (not reset when caught)"); 35 AddSignal(6, "SIGABRT", false, true, true, "abort()/IOT trap", "SIGIOT"); 36 37 AddSignal(7, "SIGBUS", false, true, true, "bus error"); 38 AddSignalCode(7, 1 /*BUS_ADRALN*/, "illegal alignment"); 39 AddSignalCode(7, 2 /*BUS_ADRERR*/, "illegal address"); 40 AddSignalCode(7, 3 /*BUS_OBJERR*/, "hardware error"); 41 42 AddSignal(8, "SIGFPE", false, true, true, "floating point exception"); 43 AddSignalCode(8, 1 /*FPE_INTDIV*/, "integer divide by zero"); 44 AddSignalCode(8, 2 /*FPE_INTOVF*/, "integer overflow"); 45 AddSignalCode(8, 3 /*FPE_FLTDIV*/, "floating point divide by zero"); 46 AddSignalCode(8, 4 /*FPE_FLTOVF*/, "floating point overflow"); 47 AddSignalCode(8, 5 /*FPE_FLTUND*/, "floating point underflow"); 48 AddSignalCode(8, 6 /*FPE_FLTRES*/, "floating point inexact result"); 49 AddSignalCode(8, 7 /*FPE_FLTINV*/, "floating point invalid operation"); 50 AddSignalCode(8, 8 /*FPE_FLTSUB*/, "subscript out of range"); 51 52 AddSignal(9, "SIGKILL", false, true, true, "kill"); 53 AddSignal(10, "SIGUSR1", false, true, true, "user defined signal 1"); 54 55 AddSignal(11, "SIGSEGV", false, true, true, "segmentation violation"); 56 AddSignalCode(11, 1 /*SEGV_MAPERR*/, "address not mapped to object", SignalCodePrintOption::Address); 57 AddSignalCode(11, 2 /*SEGV_ACCERR*/, "invalid permissions for mapped object", SignalCodePrintOption::Address); 58 AddSignalCode(11, 3 /*SEGV_BNDERR*/, "failed address bounds checks", SignalCodePrintOption::Bounds); 59 AddSignalCode(11, 8 /*SEGV_MTEAERR*/, "async tag check fault"); 60 AddSignalCode(11, 9 /*SEGV_MTESERR*/, "sync tag check fault", SignalCodePrintOption::Address); 61 // Some platforms will occasionally send nonstandard spurious SI_KERNEL 62 // codes. One way to get this is via unaligned SIMD loads. Treat it as invalid address. 63 AddSignalCode(11, 0x80 /*SI_KERNEL*/, "invalid address", SignalCodePrintOption::Address); 64 65 AddSignal(12, "SIGUSR2", false, true, true, "user defined signal 2"); 66 AddSignal(13, "SIGPIPE", false, true, true, "write to pipe with reading end closed"); 67 AddSignal(14, "SIGALRM", false, false, false, "alarm"); 68 AddSignal(15, "SIGTERM", false, true, true, "termination requested"); 69 AddSignal(16, "SIGSTKFLT", false, true, true, "stack fault"); 70 AddSignal(17, "SIGCHLD", false, false, true, "child status has changed", "SIGCLD"); 71 AddSignal(18, "SIGCONT", false, false, true, "process continue"); 72 AddSignal(19, "SIGSTOP", true, true, true, "process stop"); 73 AddSignal(20, "SIGTSTP", false, true, true, "tty stop"); 74 AddSignal(21, "SIGTTIN", false, true, true, "background tty read"); 75 AddSignal(22, "SIGTTOU", false, true, true, "background tty write"); 76 AddSignal(23, "SIGURG", false, true, true, "urgent data on socket"); 77 AddSignal(24, "SIGXCPU", false, true, true, "CPU resource exceeded"); 78 AddSignal(25, "SIGXFSZ", false, true, true, "file size limit exceeded"); 79 AddSignal(26, "SIGVTALRM", false, true, true, "virtual time alarm"); 80 AddSignal(27, "SIGPROF", false, false, false, "profiling time alarm"); 81 AddSignal(28, "SIGWINCH", false, true, true, "window size changes"); 82 AddSignal(29, "SIGIO", false, true, true, "input/output ready/Pollable event", "SIGPOLL"); 83 AddSignal(30, "SIGPWR", false, true, true, "power failure"); 84 AddSignal(31, "SIGSYS", false, true, true, "invalid system call"); 85 AddSignal(32, "SIG32", false, false, false, "threading library internal signal 1"); 86 AddSignal(33, "SIG33", false, false, false, "threading library internal signal 2"); 87 AddSignal(34, "SIGRTMIN", false, false, false, "real time signal 0"); 88 AddSignal(35, "SIGRTMIN+1", false, false, false, "real time signal 1"); 89 AddSignal(36, "SIGRTMIN+2", false, false, false, "real time signal 2"); 90 AddSignal(37, "SIGRTMIN+3", false, false, false, "real time signal 3"); 91 AddSignal(38, "SIGRTMIN+4", false, false, false, "real time signal 4"); 92 AddSignal(39, "SIGRTMIN+5", false, false, false, "real time signal 5"); 93 AddSignal(40, "SIGRTMIN+6", false, false, false, "real time signal 6"); 94 AddSignal(41, "SIGRTMIN+7", false, false, false, "real time signal 7"); 95 AddSignal(42, "SIGRTMIN+8", false, false, false, "real time signal 8"); 96 AddSignal(43, "SIGRTMIN+9", false, false, false, "real time signal 9"); 97 AddSignal(44, "SIGRTMIN+10", false, false, false, "real time signal 10"); 98 AddSignal(45, "SIGRTMIN+11", false, false, false, "real time signal 11"); 99 AddSignal(46, "SIGRTMIN+12", false, false, false, "real time signal 12"); 100 AddSignal(47, "SIGRTMIN+13", false, false, false, "real time signal 13"); 101 AddSignal(48, "SIGRTMIN+14", false, false, false, "real time signal 14"); 102 AddSignal(49, "SIGRTMIN+15", false, false, false, "real time signal 15"); 103 AddSignal(50, "SIGRTMAX-14", false, false, false, "real time signal 16"); // switching to SIGRTMAX-xxx to match "kill -l" output 104 AddSignal(51, "SIGRTMAX-13", false, false, false, "real time signal 17"); 105 AddSignal(52, "SIGRTMAX-12", false, false, false, "real time signal 18"); 106 AddSignal(53, "SIGRTMAX-11", false, false, false, "real time signal 19"); 107 AddSignal(54, "SIGRTMAX-10", false, false, false, "real time signal 20"); 108 AddSignal(55, "SIGRTMAX-9", false, false, false, "real time signal 21"); 109 AddSignal(56, "SIGRTMAX-8", false, false, false, "real time signal 22"); 110 AddSignal(57, "SIGRTMAX-7", false, false, false, "real time signal 23"); 111 AddSignal(58, "SIGRTMAX-6", false, false, false, "real time signal 24"); 112 AddSignal(59, "SIGRTMAX-5", false, false, false, "real time signal 25"); 113 AddSignal(60, "SIGRTMAX-4", false, false, false, "real time signal 26"); 114 AddSignal(61, "SIGRTMAX-3", false, false, false, "real time signal 27"); 115 AddSignal(62, "SIGRTMAX-2", false, false, false, "real time signal 28"); 116 AddSignal(63, "SIGRTMAX-1", false, false, false, "real time signal 29"); 117 AddSignal(64, "SIGRTMAX", false, false, false, "real time signal 30"); 118 // clang-format on 119 } 120