blob: 57abe47b46b238d72d194c8f2364972d7f2ce221 [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,
Valentina Giusti6f8c1f82016-10-06 18:05:12 +000025 eBoundViolation,
Chaoren Lin28e57422015-02-03 01:51:25 +000026
Kate Stoneb9c1b512016-09-06 20:57:50 +000027 // SIGILL crash reasons.
28 eIllegalOpcode,
29 eIllegalOperand,
30 eIllegalAddressingMode,
31 eIllegalTrap,
32 ePrivilegedOpcode,
33 ePrivilegedRegister,
34 eCoprocessorError,
35 eInternalStackError,
Chaoren Lin28e57422015-02-03 01:51:25 +000036
Kate Stoneb9c1b512016-09-06 20:57:50 +000037 // SIGBUS crash reasons,
38 eIllegalAlignment,
39 eIllegalAddress,
40 eHardwareError,
Chaoren Lin28e57422015-02-03 01:51:25 +000041
Kate Stoneb9c1b512016-09-06 20:57:50 +000042 // SIGFPE crash reasons,
43 eIntegerDivideByZero,
44 eIntegerOverflow,
45 eFloatDivideByZero,
46 eFloatOverflow,
47 eFloatUnderflow,
48 eFloatInexactResult,
49 eFloatInvalidOperation,
50 eFloatSubscriptRange
Chaoren Lin28e57422015-02-03 01:51:25 +000051};
52
Valentina Giusti1c2c7282016-10-07 13:21:59 +000053std::string GetCrashReasonString(CrashReason reason, lldb::addr_t fault_addr);
Valentina Giusti6f8c1f82016-10-06 18:05:12 +000054std::string GetCrashReasonString(CrashReason reason, const siginfo_t &info);
Chaoren Lin28e57422015-02-03 01:51:25 +000055
Kate Stoneb9c1b512016-09-06 20:57:50 +000056const char *CrashReasonAsString(CrashReason reason);
Chaoren Lin28e57422015-02-03 01:51:25 +000057
Kate Stoneb9c1b512016-09-06 20:57:50 +000058CrashReason GetCrashReason(const siginfo_t &info);
Chaoren Lin28e57422015-02-03 01:51:25 +000059
60#endif // #ifndef liblldb_CrashReason_H_