blob: 1ef3e1a6998d959cc172685f7b89bf9d5779161f [file] [log] [blame]
Chaoren Lin28e57422015-02-03 01:51:25 +00001//===-- CrashReason.h -------------------------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef liblldb_CrashReason_H_
11#define liblldb_CrashReason_H_
12
13#include "lldb/lldb-types.h"
14
15#include <signal.h>
16
17#include <string>
18
Kate Stoneb9c1b512016-09-06 20:57:50 +000019enum class CrashReason {
20 eInvalidCrashReason,
Chaoren Lin28e57422015-02-03 01:51:25 +000021
Kate Stoneb9c1b512016-09-06 20:57:50 +000022 // SIGSEGV crash reasons.
23 eInvalidAddress,
24 ePrivilegedAddress,
Chaoren Lin28e57422015-02-03 01:51:25 +000025
Kate Stoneb9c1b512016-09-06 20:57:50 +000026 // SIGILL crash reasons.
27 eIllegalOpcode,
28 eIllegalOperand,
29 eIllegalAddressingMode,
30 eIllegalTrap,
31 ePrivilegedOpcode,
32 ePrivilegedRegister,
33 eCoprocessorError,
34 eInternalStackError,
Chaoren Lin28e57422015-02-03 01:51:25 +000035
Kate Stoneb9c1b512016-09-06 20:57:50 +000036 // SIGBUS crash reasons,
37 eIllegalAlignment,
38 eIllegalAddress,
39 eHardwareError,
Chaoren Lin28e57422015-02-03 01:51:25 +000040
Kate Stoneb9c1b512016-09-06 20:57:50 +000041 // SIGFPE crash reasons,
42 eIntegerDivideByZero,
43 eIntegerOverflow,
44 eFloatDivideByZero,
45 eFloatOverflow,
46 eFloatUnderflow,
47 eFloatInexactResult,
48 eFloatInvalidOperation,
49 eFloatSubscriptRange
Chaoren Lin28e57422015-02-03 01:51:25 +000050};
51
Kate Stoneb9c1b512016-09-06 20:57:50 +000052std::string GetCrashReasonString(CrashReason reason, lldb::addr_t fault_addr);
Chaoren Lin28e57422015-02-03 01:51:25 +000053
Kate Stoneb9c1b512016-09-06 20:57:50 +000054const char *CrashReasonAsString(CrashReason reason);
Chaoren Lin28e57422015-02-03 01:51:25 +000055
Kate Stoneb9c1b512016-09-06 20:57:50 +000056CrashReason GetCrashReason(const siginfo_t &info);
Chaoren Lin28e57422015-02-03 01:51:25 +000057
58#endif // #ifndef liblldb_CrashReason_H_