diff options
Diffstat (limited to 'third_party/rust/minidump-common/src/errors/linux.rs')
-rw-r--r-- | third_party/rust/minidump-common/src/errors/linux.rs | 152 |
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, +} |