#endif
case SEGV_BNDERR:
return CrashReason::eBoundViolation;
+#ifdef __linux__
+#ifndef SEGV_MTEAERR
+#define SEGV_MTEAERR 8
+#endif
+ case SEGV_MTEAERR:
+ return CrashReason::eAsyncTagCheckFault;
+#ifndef SEGV_MTESERR
+#define SEGV_MTESERR 9
+#endif
+ case SEGV_MTESERR:
+ return CrashReason::eSyncTagCheckFault;
+#endif // __linux__
}
return CrashReason::eInvalidCrashReason;
case CrashReason::eBoundViolation:
str = "signal SIGSEGV: bound violation";
break;
+ case CrashReason::eAsyncTagCheckFault:
+ str = "signal SIGSEGV: async tag check fault";
+ break;
+ case CrashReason::eSyncTagCheckFault:
+ str = "signal SIGSEGV: sync tag check fault";
+ AppendFaultAddr(str, fault_addr);
+ break;
case CrashReason::eIllegalOpcode:
str = "signal SIGILL: illegal instruction";
break;
case CrashReason::eBoundViolation:
str = "eBoundViolation";
break;
+ case CrashReason::eAsyncTagCheckFault:
+ str = "eAsyncTagCheckFault";
+ break;
+ case CrashReason::eSyncTagCheckFault:
+ str = "eSyncTagCheckFault";
+ break;
// SIGILL crash reasons.
case CrashReason::eIllegalOpcode: