LLDB
mainline
llvm-project
lldb
source
Plugins
Process
Utility
OpenBSDSignals.cpp
Go to the documentation of this file.
1
//===-- OpenBSDSignals.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 "
OpenBSDSignals.h
"
10
11
#ifdef __OpenBSD__
12
#include <csignal>
13
14
#define ADD_SIGCODE(signal_name, signal_value, code_name, code_value, ...) \
15
static_assert(signal_name == signal_value, \
16
"Value mismatch for signal number " #signal_name); \
17
static_assert(code_name == code_value, \
18
"Value mismatch for signal code " #code_name); \
19
AddSignalCode(signal_value, code_value, __VA_ARGS__)
20
#else
21
#define ADD_SIGCODE(signal_name, signal_value, code_name, code_value, ...) \
22
AddSignalCode(signal_value, code_value, __VA_ARGS__)
23
#endif
/* ifdef __OpenBSD */
24
25
using namespace
lldb_private
;
26
27
OpenBSDSignals::OpenBSDSignals
() :
UnixSignals
() {
Reset
(); }
28
29
void
OpenBSDSignals::Reset
() {
30
UnixSignals::Reset
();
31
32
// clang-format off
33
// SIGILL
34
ADD_SIGCODE
(
SIGILL
, 4, ILL_ILLOPC, 1,
"illegal opcode"
);
35
ADD_SIGCODE
(
SIGILL
, 4, ILL_ILLOPN, 2,
"illegal operand"
);
36
ADD_SIGCODE
(
SIGILL
, 4, ILL_ILLADR, 3,
"illegal addressing mode"
);
37
ADD_SIGCODE
(
SIGILL
, 4, ILL_ILLTRP, 4,
"illegal trap"
);
38
ADD_SIGCODE
(
SIGILL
, 4, ILL_PRVOPC, 5,
"privileged opcode"
);
39
ADD_SIGCODE
(
SIGILL
, 4, ILL_PRVREG, 6,
"privileged register"
);
40
ADD_SIGCODE
(
SIGILL
, 4, ILL_COPROC, 7,
"coprocessor error"
);
41
ADD_SIGCODE
(
SIGILL
, 4, ILL_BADSTK, 8,
"internal stack error"
);
42
ADD_SIGCODE
(
SIGILL
, 4, ILL_BTCFI, 9,
"IBT missing on indirect call"
);
43
44
// SIGFPE
45
ADD_SIGCODE
(
SIGFPE
, 8, FPE_INTDIV, 1,
"integer divide by zero"
);
46
ADD_SIGCODE
(
SIGFPE
, 8, FPE_INTOVF, 2,
"integer overflow"
);
47
ADD_SIGCODE
(
SIGFPE
, 8, FPE_FLTDIV, 3,
"floating point divide by zero"
);
48
ADD_SIGCODE
(
SIGFPE
, 8, FPE_FLTOVF, 4,
"floating point overflow"
);
49
ADD_SIGCODE
(
SIGFPE
, 8, FPE_FLTUND, 5,
"floating point underflow"
);
50
ADD_SIGCODE
(
SIGFPE
, 8, FPE_FLTRES, 6,
"floating point inexact result"
);
51
ADD_SIGCODE
(
SIGFPE
, 8, FPE_FLTINV, 7,
"invalid floating point operation"
);
52
ADD_SIGCODE
(
SIGFPE
, 8, FPE_FLTSUB, 8,
"subscript out of range"
);
53
54
// SIGBUS
55
ADD_SIGCODE
(
SIGBUS
, 10, BUS_ADRALN, 1,
"invalid address alignment"
);
56
ADD_SIGCODE
(
SIGBUS
, 10, BUS_ADRERR, 2,
"non-existent physical address"
);
57
ADD_SIGCODE
(
SIGBUS
, 10, BUS_OBJERR, 3,
"object specific hardware error"
);
58
59
// SIGSEGV
60
ADD_SIGCODE
(
SIGSEGV
, 11, SEGV_MAPERR, 1,
"address not mapped to object"
,
61
SignalCodePrintOption::Address
);
62
ADD_SIGCODE
(
SIGSEGV
, 11, SEGV_ACCERR, 2,
"invalid permissions for mapped object"
,
63
SignalCodePrintOption::Address
);
64
65
// SIGNO NAME SUPPRESS STOP NOTIFY DESCRIPTION
66
// ===== ============== ======== ====== ====== ========================
67
AddSignal
(32,
"SIGTHR"
,
false
,
false
,
false
,
"thread library AST"
);
68
// clang-format on
69
}
ADD_SIGCODE
#define ADD_SIGCODE(signal_name, signal_value, code_name, code_value,...)
Definition
FreeBSDSignals.cpp:25
OpenBSDSignals.h
SIGILL
#define SIGILL
Definition
PlatformLinux.cpp:39
SIGFPE
#define SIGFPE
Definition
PlatformLinux.cpp:45
SIGSEGV
#define SIGSEGV
Definition
PlatformLinux.cpp:48
SIGBUS
#define SIGBUS
Definition
PlatformLinux.cpp:42
lldb_private::OpenBSDSignals::OpenBSDSignals
OpenBSDSignals()
Definition
OpenBSDSignals.cpp:27
lldb_private::OpenBSDSignals::Reset
void Reset() override
Definition
OpenBSDSignals.cpp:29
lldb_private::UnixSignals::Reset
virtual void Reset()
Definition
UnixSignals.cpp:59
lldb_private::UnixSignals::AddSignal
void AddSignal(int signo, llvm::StringRef name, bool default_suppress, bool default_stop, bool default_notify, llvm::StringRef description, llvm::StringRef alias=llvm::StringRef())
Definition
UnixSignals.cpp:105
lldb_private::UnixSignals::Address
@ Address
Definition
UnixSignals.h:110
lldb_private::UnixSignals::UnixSignals
UnixSignals()
Definition
UnixSignals.cpp:53
lldb_private
A class that represents a running process on the host machine.
Definition
SBAddressRange.h:14
Generated on
for LLDB by
1.14.0