in Crashlytics/Crashlytics/Handlers/FIRCLSMachException.c [342:468]
static void FIRCLSMachExceptionNameLookup(exception_type_t number,
mach_exception_data_type_t code,
const char** name,
const char** codeName) {
if (!name || !codeName) {
return;
}
*name = NULL;
*codeName = NULL;
switch (number) {
case EXC_BAD_ACCESS:
*name = "EXC_BAD_ACCESS";
switch (code) {
case KERN_INVALID_ADDRESS:
*codeName = "KERN_INVALID_ADDRESS";
break;
case KERN_PROTECTION_FAILURE:
*codeName = "KERN_PROTECTION_FAILURE";
break;
}
break;
case EXC_BAD_INSTRUCTION:
*name = "EXC_BAD_INSTRUCTION";
#if CLS_CPU_X86
*codeName = "EXC_I386_INVOP";
#endif
break;
case EXC_ARITHMETIC:
*name = "EXC_ARITHMETIC";
#if CLS_CPU_X86
switch (code) {
case EXC_I386_DIV:
*codeName = "EXC_I386_DIV";
break;
case EXC_I386_INTO:
*codeName = "EXC_I386_INTO";
break;
case EXC_I386_NOEXT:
*codeName = "EXC_I386_NOEXT";
break;
case EXC_I386_EXTOVR:
*codeName = "EXC_I386_EXTOVR";
break;
case EXC_I386_EXTERR:
*codeName = "EXC_I386_EXTERR";
break;
case EXC_I386_EMERR:
*codeName = "EXC_I386_EMERR";
break;
case EXC_I386_BOUND:
*codeName = "EXC_I386_BOUND";
break;
case EXC_I386_SSEEXTERR:
*codeName = "EXC_I386_SSEEXTERR";
break;
}
#endif
break;
case EXC_BREAKPOINT:
*name = "EXC_BREAKPOINT";
#if CLS_CPU_X86
switch (code) {
case EXC_I386_DIVERR:
*codeName = "EXC_I386_DIVERR";
break;
case EXC_I386_SGLSTP:
*codeName = "EXC_I386_SGLSTP";
break;
case EXC_I386_NMIFLT:
*codeName = "EXC_I386_NMIFLT";
break;
case EXC_I386_BPTFLT:
*codeName = "EXC_I386_BPTFLT";
break;
case EXC_I386_INTOFLT:
*codeName = "EXC_I386_INTOFLT";
break;
case EXC_I386_BOUNDFLT:
*codeName = "EXC_I386_BOUNDFLT";
break;
case EXC_I386_INVOPFLT:
*codeName = "EXC_I386_INVOPFLT";
break;
case EXC_I386_NOEXTFLT:
*codeName = "EXC_I386_NOEXTFLT";
break;
case EXC_I386_EXTOVRFLT:
*codeName = "EXC_I386_EXTOVRFLT";
break;
case EXC_I386_INVTSSFLT:
*codeName = "EXC_I386_INVTSSFLT";
break;
case EXC_I386_SEGNPFLT:
*codeName = "EXC_I386_SEGNPFLT";
break;
case EXC_I386_STKFLT:
*codeName = "EXC_I386_STKFLT";
break;
case EXC_I386_GPFLT:
*codeName = "EXC_I386_GPFLT";
break;
case EXC_I386_PGFLT:
*codeName = "EXC_I386_PGFLT";
break;
case EXC_I386_EXTERRFLT:
*codeName = "EXC_I386_EXTERRFLT";
break;
case EXC_I386_ALIGNFLT:
*codeName = "EXC_I386_ALIGNFLT";
break;
case EXC_I386_ENDPERR:
*codeName = "EXC_I386_ENDPERR";
break;
case EXC_I386_ENOEXTFLT:
*codeName = "EXC_I386_ENOEXTFLT";
break;
}
#endif
break;
case EXC_GUARD:
*name = "EXC_GUARD";
break;
}
}