You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.4 KiB
60 lines
1.4 KiB
//===-- CrashReason.h -------------------------------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#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_
|