forked from OSchip/llvm-project
61 lines
1.4 KiB
C++
61 lines
1.4 KiB
C++
//===-- 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_
|