summaryrefslogtreecommitdiffstats
path: root/third_party/rust/minidump-common/src/errors/linux.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/minidump-common/src/errors/linux.rs')
-rw-r--r--third_party/rust/minidump-common/src/errors/linux.rs152
1 files changed, 152 insertions, 0 deletions
diff --git a/third_party/rust/minidump-common/src/errors/linux.rs b/third_party/rust/minidump-common/src/errors/linux.rs
new file mode 100644
index 0000000000..3b60616be1
--- /dev/null
+++ b/third_party/rust/minidump-common/src/errors/linux.rs
@@ -0,0 +1,152 @@
+#![allow(non_camel_case_types)]
+#![allow(non_upper_case_globals)]
+
+use enum_primitive_derive::Primitive;
+
+/// Values for
+/// [`MINIDUMP_EXCEPTION::exception_code`](crate::format::MINIDUMP_EXCEPTION::exception_code)
+/// for crashes on Linux.
+///
+/// These are primarily signal numbers from bits/signum.h.
+#[repr(u32)]
+#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)]
+pub enum ExceptionCodeLinux {
+ /// Hangup (POSIX)
+ SIGHUP = 0x1u32,
+ /// Interrupt (ANSI)
+ SIGINT = 0x2,
+ /// Quit (POSIX)
+ SIGQUIT = 0x3,
+ /// Illegal instruction (ANSI)
+ SIGILL = 0x4,
+ /// Trace trap (POSIX)
+ SIGTRAP = 0x5,
+ /// Abort (ANSI)
+ SIGABRT = 0x6,
+ /// BUS error (4.2 BSD)
+ SIGBUS = 0x7,
+ /// Floating-point exception (ANSI)
+ SIGFPE = 0x8,
+ /// Kill, unblockable (POSIX)
+ SIGKILL = 0x9,
+ /// User-defined signal 1 (POSIX)
+ SIGUSR1 = 0xa,
+ /// Segmentation violation (ANSI)
+ SIGSEGV = 0xb,
+ /// User-defined signal 2 (POSIX)
+ SIGUSR2 = 0xc,
+ /// Broken pipe (POSIX)
+ SIGPIPE = 0xd,
+ /// Alarm clock (POSIX)
+ SIGALRM = 0xe,
+ /// Termination (ANSI)
+ SIGTERM = 0xf,
+ /// Stack fault
+ SIGSTKFLT = 0x10,
+ /// Child status has changed (POSIX)
+ SIGCHLD = 0x11,
+ /// Continue (POSIX)
+ SIGCONT = 0x12,
+ /// Stop, unblockable (POSIX)
+ SIGSTOP = 0x13,
+ /// Keyboard stop (POSIX)
+ SIGTSTP = 0x14,
+ /// Background read from tty (POSIX)
+ SIGTTIN = 0x15,
+ /// Background write to tty (POSIX)
+ SIGTTOU = 0x16,
+ /// Urgent condition on socket (4.2 BSD)
+ SIGURG = 0x17,
+ /// CPU limit exceeded (4.2 BSD)
+ SIGXCPU = 0x18,
+ /// File size limit exceeded (4.2 BSD)
+ SIGXFSZ = 0x19,
+ /// Virtual alarm clock (4.2 BSD)
+ SIGVTALRM = 0x1a,
+ /// Profiling alarm clock (4.2 BSD)
+ SIGPROF = 0x1b,
+ /// Window size change (4.3 BSD, Sun)
+ SIGWINCH = 0x1c,
+ /// I/O now possible (4.2 BSD)
+ SIGIO = 0x1d,
+ /// Power failure restart (System V)
+ SIGPWR = 0x1e,
+ /// Bad system call
+ SIGSYS = 0x1f,
+ /// No exception, dump requested
+ DUMP_REQUESTED = 0xffffffff,
+}
+
+// These values come from asm-generic/siginfo.h
+#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)]
+#[repr(i32)]
+pub enum ExceptionCodeLinuxSicode {
+ SI_USER = 0,
+ SI_KERNEL = 0x80,
+ SI_QUEUE = -1i32,
+ SI_TIMER = -2i32,
+ SI_MESGQ = -3i32,
+ SI_ASYNCIO = -4i32,
+ SI_SIGIO = -5i32,
+ SI_TKILL = -6i32,
+ SI_DETHREAD = -7i32,
+ SI_ASYNCNL = -60i32,
+}
+
+#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)]
+pub enum ExceptionCodeLinuxSigillKind {
+ ILL_ILLOPC = 1,
+ ILL_ILLOPN = 2,
+ ILL_ILLADR = 3,
+ ILL_ILLTRP = 4,
+ ILL_PRVOPC = 5,
+ ILL_PRVREG = 6,
+ ILL_COPROC = 7,
+ ILL_BADSTK = 8,
+ ILL_BADIADDR = 9,
+}
+
+#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)]
+pub enum ExceptionCodeLinuxSigtrapKind {
+ TRAP_BRKPT = 1,
+ TRAP_TRACE = 2,
+ TRAP_BRANCH = 3,
+ TRAP_HWBKPT = 4,
+ TRAP_UNK = 5,
+ TRAP_PERF = 6,
+}
+
+#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)]
+pub enum ExceptionCodeLinuxSigfpeKind {
+ FPE_INTDIV = 1,
+ FPE_INTOVF = 2,
+ FPE_FLTDIV = 3,
+ FPE_FLTOVF = 4,
+ FPE_FLTUND = 5,
+ FPE_FLTRES = 6,
+ FPE_FLTINV = 7,
+ FPE_FLTSUB = 8,
+}
+
+#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)]
+pub enum ExceptionCodeLinuxSigsegvKind {
+ SEGV_MAPERR = 1,
+ SEGV_ACCERR = 2,
+ SEGV_BNDERR = 3,
+ SEGV_PKUERR = 4,
+}
+
+#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)]
+pub enum ExceptionCodeLinuxSigbusKind {
+ BUS_ADRALN = 1,
+ BUS_ADRERR = 2,
+ BUS_OBJERR = 3,
+ BUS_MCEERR_AR = 4,
+ BUS_MCEERR_AO = 5,
+}
+
+#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)]
+pub enum ExceptionCodeLinuxSigsysKind {
+ SYS_SECCOMP = 1,
+ SYS_USER_DISPATCH = 2,
+}