pcc created this revision. pcc added a reviewer: labath. Herald added a subscriber: emaste. pcc requested review of this revision. Herald added a project: LLDB.
As of Linux 5.10, the kernel may report either of the two following crash reasons: - SEGV_MTEAERR: async MTE tag check fault - SEGV_MTESERR: sync MTE tag check fault Teach LLDB about them. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D93495 Files: lldb/source/Plugins/Process/POSIX/CrashReason.cpp lldb/source/Plugins/Process/POSIX/CrashReason.h Index: lldb/source/Plugins/Process/POSIX/CrashReason.h =================================================================== --- lldb/source/Plugins/Process/POSIX/CrashReason.h +++ lldb/source/Plugins/Process/POSIX/CrashReason.h @@ -22,6 +22,8 @@ eInvalidAddress, ePrivilegedAddress, eBoundViolation, + eAsyncTagCheckFault, + eSyncTagCheckFault, // SIGILL crash reasons. eIllegalOpcode, Index: lldb/source/Plugins/Process/POSIX/CrashReason.cpp =================================================================== --- lldb/source/Plugins/Process/POSIX/CrashReason.cpp +++ lldb/source/Plugins/Process/POSIX/CrashReason.cpp @@ -58,6 +58,16 @@ #endif case SEGV_BNDERR: return CrashReason::eBoundViolation; +#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; } return CrashReason::eInvalidCrashReason; @@ -166,6 +176,12 @@ 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"; + break; case CrashReason::eIllegalOpcode: str = "signal SIGILL: illegal instruction"; break; @@ -246,6 +262,12 @@ case CrashReason::eBoundViolation: str = "eBoundViolation"; break; + case CrashReason::eAsyncTagCheckFault: + str = "eAsyncTagCheckFault"; + break; + case CrashReason::eSyncTagCheckFault: + str = "eSyncTagCheckFault"; + break; // SIGILL crash reasons. case CrashReason::eIllegalOpcode:
Index: lldb/source/Plugins/Process/POSIX/CrashReason.h =================================================================== --- lldb/source/Plugins/Process/POSIX/CrashReason.h +++ lldb/source/Plugins/Process/POSIX/CrashReason.h @@ -22,6 +22,8 @@ eInvalidAddress, ePrivilegedAddress, eBoundViolation, + eAsyncTagCheckFault, + eSyncTagCheckFault, // SIGILL crash reasons. eIllegalOpcode, Index: lldb/source/Plugins/Process/POSIX/CrashReason.cpp =================================================================== --- lldb/source/Plugins/Process/POSIX/CrashReason.cpp +++ lldb/source/Plugins/Process/POSIX/CrashReason.cpp @@ -58,6 +58,16 @@ #endif case SEGV_BNDERR: return CrashReason::eBoundViolation; +#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; } return CrashReason::eInvalidCrashReason; @@ -166,6 +176,12 @@ 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"; + break; case CrashReason::eIllegalOpcode: str = "signal SIGILL: illegal instruction"; break; @@ -246,6 +262,12 @@ case CrashReason::eBoundViolation: str = "eBoundViolation"; break; + case CrashReason::eAsyncTagCheckFault: + str = "eAsyncTagCheckFault"; + break; + case CrashReason::eSyncTagCheckFault: + str = "eSyncTagCheckFault"; + break; // SIGILL crash reasons. case CrashReason::eIllegalOpcode:
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits