From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- .../rust/minidump-common/src/errors/macos.rs | 416 +++++++++++++++++++++ 1 file changed, 416 insertions(+) create mode 100644 third_party/rust/minidump-common/src/errors/macos.rs (limited to 'third_party/rust/minidump-common/src/errors/macos.rs') diff --git a/third_party/rust/minidump-common/src/errors/macos.rs b/third_party/rust/minidump-common/src/errors/macos.rs new file mode 100644 index 0000000000..fda0729016 --- /dev/null +++ b/third_party/rust/minidump-common/src/errors/macos.rs @@ -0,0 +1,416 @@ +#![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 macOS. +/// +/// Based on Darwin/macOS' [osfmk/mach/exception_types.h][header]. This is what macOS calls an "exception", +/// not a "code". +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/osfmk/mach/exception_types.h#L64-L105 +#[repr(u32)] +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMac { + /// code can be a kern_return_t + EXC_BAD_ACCESS = 1, + /// code is CPU-specific + EXC_BAD_INSTRUCTION = 2, + /// code is CPU-specific + EXC_ARITHMETIC = 3, + /// code is CPU-specific + EXC_EMULATION = 4, + EXC_SOFTWARE = 5, + /// code is CPU-specific + EXC_BREAKPOINT = 6, + EXC_SYSCALL = 7, + EXC_MACH_SYSCALL = 8, + EXC_RPC_ALERT = 9, + EXC_RESOURCE = 11, + EXC_GUARD = 12, + /// Fake exception code used by Crashpad's SimulateCrash ('CPsx') + SIMULATED = 0x43507378, +} + +/// Mac/iOS Kernel Bad Access Exceptions +/// +/// These are the relevant kern_return_t values from [osfmk/mach/kern_return.h][header] +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/osfmk/mach/kern_return.h#L70-L340 +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacBadAccessKernType { + KERN_INVALID_ADDRESS = 1, + KERN_PROTECTION_FAILURE = 2, + KERN_FAILURE = 5, + KERN_NO_ACCESS = 8, + KERN_MEMORY_FAILURE = 9, + KERN_MEMORY_ERROR = 10, + KERN_CODESIGN_ERROR = 50, +} + +/// Mac/iOS ARM Userland Bad Accesses Exceptions +/// +/// See the [osfmk/mach/arm/exception.h][header] header in Apple's kernel sources +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/osfmk/mach/arm/exception.h#L66-L75 +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacBadAccessArmType { + EXC_ARM_DA_ALIGN = 0x0101, + EXC_ARM_DA_DEBUG = 0x0102, + EXC_ARM_SP_ALIGN = 0x0103, + EXC_ARM_SWP = 0x0104, + EXC_ARM_PAC_FAIL = 0x0105, +} + +/// Mac/iOS PowerPC Userland Bad Access Exceptions +/// +/// See the [osfmk/mach/ppc/exception.h][header] header in Apple's kernel sources +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/b472f0612b8556cd1c6eb1c285ec1953de759e35/osfmk/mach/ppc/exception.h#L71-L78 +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacBadAccessPpcType { + EXC_PPC_VM_PROT_READ = 0x0101, + EXC_PPC_BADSPACE = 0x0102, + EXC_PPC_UNALIGNED = 0x0103, +} + +/// Mac/iOS x86 Userland Bad Access Exceptions +/// +/// See the [osfmk/mach/i386/exception.h][header] header in Apple's kernel sources +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/osfmk/mach/i386/exception.h#L122 +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacBadAccessX86Type { + EXC_I386_GPFLT = 13, +} + +/// Mac/iOS ARM Bad Instruction Exceptions +/// +/// See the [osfmk/mach/arm/exception.h][header] header in Apple's kernel sources +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/osfmk/mach/arm/exception.h#L48-L52 +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacBadInstructionArmType { + EXC_ARM_UNDEFINED = 1, +} + +/// Mac/iOS PowerPC Bad Instruction Exceptions +/// +/// See the [osfmk/mach/ppc/exception.h][header] header in Apple's kernel sources +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/b472f0612b8556cd1c6eb1c285ec1953de759e35/osfmk/mach/ppc/exception.h#L60-L69 +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacBadInstructionPpcType { + EXC_PPC_INVALID_SYSCALL = 1, + EXC_PPC_UNIPL_INST = 2, + EXC_PPC_PRIVINST = 3, + EXC_PPC_PRIVREG = 4, + EXC_PPC_TRACE = 5, + EXC_PPC_PERFMON = 6, +} + +/// Mac/iOS x86 Bad Instruction Exceptions +/// +/// See the [osfmk/mach/i386/exception.h][header] header in Apple's kernel sources +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/osfmk/mach/i386/exception.h#L74-L78 +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacBadInstructionX86Type { + /// Invalid Operation + EXC_I386_INVOP = 1, + + // The rest of these are raw x86 interrupt codes. + /// Invalid Task State Segment + EXC_I386_INVTSSFLT = 10, + /// Segment Not Present + EXC_I386_SEGNPFLT = 11, + /// Stack Fault + EXC_I386_STKFLT = 12, + /// General Protection Fault + EXC_I386_GPFLT = 13, + /// Alignment Fault + EXC_I386_ALIGNFLT = 17, + // For sake of completeness, here's the interrupt codes that won't show up here (and why): + + // EXC_I386_DIVERR = 0: mapped to EXC_ARITHMETIC/EXC_I386_DIV + // EXC_I386_SGLSTP = 1: mapped to EXC_BREAKPOINT/EXC_I386_SGL + // EXC_I386_NMIFLT = 2: should not occur in user space + // EXC_I386_BPTFLT = 3: mapped to EXC_BREAKPOINT/EXC_I386_BPT + // EXC_I386_INTOFLT = 4: mapped to EXC_ARITHMETIC/EXC_I386_INTO + // EXC_I386_BOUNDFLT = 5: mapped to EXC_ARITHMETIC/EXC_I386_BOUND + // EXC_I386_INVOPFLT = 6: mapped to EXC_BAD_INSTRUCTION/EXC_I386_INVOP + // EXC_I386_NOEXTFLT = 7: should be handled by the kernel + // EXC_I386_DBLFLT = 8: should be handled (if possible) by the kernel + // EXC_I386_EXTOVRFLT = 9: mapped to EXC_BAD_ACCESS/(PROT_READ|PROT_EXEC) + // EXC_I386_PGFLT = 14: should not occur in user space + // EXC_I386_EXTERRFLT = 16: mapped to EXC_ARITHMETIC/EXC_I386_EXTERR + // EXC_I386_ENOEXTFLT = 32: should be handled by the kernel + // EXC_I386_ENDPERR = 33: should not occur +} + +/// Mac/iOS ARM Arithmetic Exceptions +/// +/// See the [osfmk/mach/arm/exception.h][header] header in Apple's kernel sources +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/osfmk/mach/arm/exception.h#L54-L64 +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacArithmeticArmType { + EXC_ARM_FP_IO = 1, + EXC_ARM_FP_DZ = 2, + EXC_ARM_FP_OF = 3, + EXC_ARM_FP_UF = 4, + EXC_ARM_FP_IX = 5, + EXC_ARM_FP_ID = 6, +} + +/// Mac/iOS PowerPC Arithmetic Exceptions +/// +/// See the [osfmk/mach/ppc/exception.h][header] header in Apple's kernel sources +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/b472f0612b8556cd1c6eb1c285ec1953de759e35/osfmk/mach/ppc/exception.h#L80-L90 +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacArithmeticPpcType { + /// Integer ovrflow + EXC_PPC_OVERFLOW = 1, + /// Integer Divide-By-Zero + EXC_PPC_ZERO_DIVIDE = 2, + /// Float Inexact + EXC_FLT_INEXACT = 3, + /// Float Divide-By-Zero + EXC_PPC_FLT_ZERO_DIVIDE = 4, + /// Float Underflow + EXC_PPC_FLT_UNDERFLOW = 5, + /// Float Overflow + EXC_PPC_FLT_OVERFLOW = 6, + /// Float Not A Number + EXC_PPC_FLT_NOT_A_NUMBER = 7, + + // NOTE: comments in breakpad suggest these two are actually supposed to be + // for ExceptionCodeMac::EXC_EMULATION, but for now let's duplicate breakpad. + EXC_PPC_NOEMULATION = 8, + EXC_PPC_ALTIVECASSIST = 9, +} + +/// Mac/iOS x86 Arithmetic Exceptions +/// +/// See the [osfmk/mach/i386/exception.h][header] header in Apple's kernel sources +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/osfmk/mach/i386/exception.h#L80-L91 +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacArithmeticX86Type { + EXC_I386_DIV = 1, + EXC_I386_INTO = 2, + EXC_I386_NOEXT = 3, + EXC_I386_EXTOVR = 4, + EXC_I386_EXTERR = 5, + EXC_I386_EMERR = 6, + EXC_I386_BOUND = 7, + EXC_I386_SSEEXTERR = 8, +} + +/// Mac/iOS "Software" Exceptions +/// +/// See the [bsd/sys/ux_exception.h][header1] and [osfmk/mach/ppc/exception.h][header2] +/// headers in Apple's kernel sources +/// +/// [header1]: https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/bsd/sys/ux_exception.h#L48-L52 +/// [header2]: https://github.com/apple/darwin-xnu/blob/b472f0612b8556cd1c6eb1c285ec1953de759e35/osfmk/mach/ppc/exception.h#L100-L105 +#[repr(u32)] +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacSoftwareType { + SIGABRT = 0x00010002u32, + UNCAUGHT_NS_EXCEPTION = 0xDEADC0DE, + EXC_PPC_TRAP = 0x00000001, + EXC_PPC_MIGRATE = 0x00010100, + // Breakpad also defines these doesn't use them for Software crashes + // SIGSYS = 0x00010000, + // SIGPIPE = 0x00010001, +} + +/// Mac/iOS ARM Breakpoint Exceptions +/// +/// See the [osfmk/mach/arm/exception.h][header] header in Apple's kernel sources +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/osfmk/mach/arm/exception.h#L77-L81 +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacBreakpointArmType { + EXC_ARM_BREAKPOINT = 1, +} + +/// Mac/iOS PowerPC Breakpoint Exceptions +/// +/// See the [osfmk/mach/ppc/exception.h][header] header in Apple's kernel sources +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/b472f0612b8556cd1c6eb1c285ec1953de759e35/osfmk/mach/ppc/exception.h#L108-L112 +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacBreakpointPpcType { + EXC_PPC_BREAKPOINT = 1, +} + +/// Mac/iOS x86 Breakpoint Exceptions +/// +/// See the [osfmk/mach/i386/exception.h][header] header in Apple's kernel sources +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/osfmk/mach/i386/exception.h#L102-L107 +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacBreakpointX86Type { + EXC_I386_SGL = 1, + EXC_I386_BPT = 2, +} + +/// Mac/iOS Resource exception types +/// +/// See the [osfmk/kern/exc_resource.h][header] header in Apple's kernel sources +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/osfmk/kern/exc_resource.h#L60-L65 +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacResourceType { + RESOURCE_TYPE_CPU = 1, + RESOURCE_TYPE_WAKEUPS = 2, + RESOURCE_TYPE_MEMORY = 3, + RESOURCE_TYPE_IO = 4, + RESOURCE_TYPE_THREADS = 5, +} + +/// Mac/iOS CPU resource exception flavors +/// +/// See the [osfmk/kern/exc_resource.h][header] header in Apple's kernel sources +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/osfmk/kern/exc_resource.h#L67-L69 +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacResourceCpuFlavor { + FLAVOR_CPU_MONITOR = 1, + FLAVOR_CPU_MONITOR_FATAL = 2, +} + +/// Mac/iOS wakeups resource exception flavors +/// +/// See the [osfmk/kern/exc_resource.h][header] header in Apple's kernel sources +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/osfmk/kern/exc_resource.h#L67-L69 +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacResourceWakeupsFlavor { + FLAVOR_WAKEUPS_MONITOR = 1, +} + +/// Mac/iOS memory resource exception flavors +/// +/// See the [osfmk/kern/exc_resource.h][header] header in Apple's kernel sources +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/osfmk/kern/exc_resource.h#L102-L103 +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacResourceMemoryFlavor { + FLAVOR_HIGH_WATERMARK = 1, +} + +/// Mac/iOS I/O resource exception flavors +/// +/// See the [osfmk/kern/exc_resource.h][header] header in Apple's kernel sources +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/osfmk/kern/exc_resource.h#L164-L166 +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacResourceIOFlavor { + FLAVOR_IO_PHYSICAL_WRITES = 1, + FLAVOR_IO_LOGICAL_WRITES = 2, +} + +/// Mac/iOS threads resource exception flavors +/// +/// See the [osfmk/kern/exc_resource.h][header] header in Apple's kernel sources +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/osfmk/kern/exc_resource.h#L136-L137 +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacResourceThreadsFlavor { + FLAVOR_THREADS_HIGH_WATERMARK = 1, +} + +/// Mac/iOS Guard exception types +/// +/// See the [osfmk/kern/exc_guard.h][header] header in Apple's kernel sources +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/main/osfmk/kern/exc_guard.h +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacGuardType { + GUARD_TYPE_NONE = 0, + GUARD_TYPE_MACH_PORT = 1, + GUARD_TYPE_FD = 2, + GUARD_TYPE_USER = 3, + GUARD_TYPE_VN = 4, + GUARD_TYPE_VIRT_MEMORY = 5, +} + +/// Mac/iOS Mach port guard exception flavors +/// +/// See the [osfmk/mach/port.h][header] header in Apple's kernel sources +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/main/osfmk/mach/port.h +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacGuardMachPortFlavor { + GUARD_EXC_DESTROY = 0x00000001, + GUARD_EXC_MOD_REFS = 0x00000002, + GUARD_EXC_SET_CONTEXT = 0x00000004, + GUARD_EXC_UNGUARDED = 0x00000008, + GUARD_EXC_INCORRECT_GUARD = 0x00000010, + GUARD_EXC_IMMOVABLE = 0x00000020, + GUARD_EXC_STRICT_REPLY = 0x00000040, + GUARD_EXC_MSG_FILTERED = 0x00000080, + GUARD_EXC_INVALID_RIGHT = 0x00000100, + GUARD_EXC_INVALID_NAME = 0x00000200, + GUARD_EXC_INVALID_VALUE = 0x00000400, + GUARD_EXC_INVALID_ARGUMENT = 0x00000800, + GUARD_EXC_RIGHT_EXISTS = 0x00001000, + GUARD_EXC_KERN_NO_SPACE = 0x00002000, + GUARD_EXC_KERN_FAILURE = 0x00004000, + GUARD_EXC_KERN_RESOURCE = 0x00008000, + GUARD_EXC_SEND_INVALID_REPLY = 0x00010000, + GUARD_EXC_SEND_INVALID_VOUCHER = 0x00020000, + GUARD_EXC_SEND_INVALID_RIGHT = 0x00040000, + GUARD_EXC_RCV_INVALID_NAME = 0x00080000, + GUARD_EXC_RCV_GUARDED_DESC = 0x00100000, + GUARD_EXC_MOD_REFS_NON_FATAL = 0x00200000, + GUARD_EXC_IMMOVABLE_NON_FATAL = 0x00400000, +} + +/// Mac/iOS fd guard exception flavors +/// +/// See the [bsd/sys/guarded.h][header] header in Apple's kernel sources +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/main/bsd/sys/guarded.h +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacGuardFDFlavor { + GUARD_EXC_CLOSE = 0x00000001, + GUARD_EXC_DUP = 0x00000002, + GUARD_EXC_NOCLOEXEC = 0x00000004, + GUARD_EXC_SOCKET_IPC = 0x00000008, + GUARD_EXC_FILEPORT = 0x00000010, + GUARD_EXC_MISMATCH = 0x00000020, + GUARD_EXC_WRITE = 0x00000040, +} + +/// Mac/iOS vnode guard exception flavors +/// +/// See the [bsd/sys/guarded.h][header] header in Apple's kernel sources +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/main/bsd/sys/guarded.h +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacGuardVNFlavor { + GUARD_EXC_RENAME_TO = 0x00000001, + GUARD_EXC_RENAME_FROM = 0x00000002, + GUARD_EXC_UNLINK = 0x00000004, + GUARD_EXC_WRITE_OTHER = 0x00000008, + GUARD_EXC_TRUNC_OTHER = 0x00000010, + GUARD_EXC_LINK = 0x00000020, + GUARD_EXC_EXCHDATA = 0x00000040, +} + +/// Mac/iOS virtual memory guard exception flavors +/// +/// See the [osfmk/mach/vm_statistics.h][header] header in Apple's kernel sources +/// +/// [header]: https://github.com/apple/darwin-xnu/blob/main/osfmk/mach/vm_statistics.h +#[derive(Copy, Clone, PartialEq, Eq, Debug, Primitive)] +pub enum ExceptionCodeMacGuardVirtMemoryFlavor { + GUARD_EXC_DEALLOC_GAP = 0x00000001, +} -- cgit v1.2.3