| //===-- CrashReason.h -------------------------------------------*- C++ -*-===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is distributed under the University of Illinois Open Source | |
| // License. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef liblldb_CrashReason_H_ | |
| #define liblldb_CrashReason_H_ | |
| #include "lldb/lldb-types.h" | |
| #include <signal.h> | |
| #include <string> | |
| enum class CrashReason { | |
| eInvalidCrashReason, | |
| // SIGSEGV crash reasons. | |
| eInvalidAddress, | |
| ePrivilegedAddress, | |
| eBoundViolation, | |
| // SIGILL crash reasons. | |
| eIllegalOpcode, | |
| eIllegalOperand, | |
| eIllegalAddressingMode, | |
| eIllegalTrap, | |
| ePrivilegedOpcode, | |
| ePrivilegedRegister, | |
| eCoprocessorError, | |
| eInternalStackError, | |
| // SIGBUS crash reasons, | |
| eIllegalAlignment, | |
| eIllegalAddress, | |
| eHardwareError, | |
| // SIGFPE crash reasons, | |
| eIntegerDivideByZero, | |
| eIntegerOverflow, | |
| eFloatDivideByZero, | |
| eFloatOverflow, | |
| eFloatUnderflow, | |
| eFloatInexactResult, | |
| eFloatInvalidOperation, | |
| eFloatSubscriptRange | |
| }; | |
| std::string GetCrashReasonString(CrashReason reason, lldb::addr_t fault_addr); | |
| std::string GetCrashReasonString(CrashReason reason, const siginfo_t &info); | |
| const char *CrashReasonAsString(CrashReason reason); | |
| CrashReason GetCrashReason(const siginfo_t &info); | |
| #endif // #ifndef liblldb_CrashReason_H_ |