]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/source/Plugins/Process/Utility/StopInfoMachException.h
Update to ELF Tool Chain r3490
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / source / Plugins / Process / Utility / StopInfoMachException.h
1 //===-- StopInfoMachException.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_StopInfoMachException_h_
11 #define liblldb_StopInfoMachException_h_
12
13 // C Includes
14 // C++ Includes
15 #include <string>
16
17 // Other libraries and framework includes
18 // Project includes
19 #include "lldb/Target/StopInfo.h"
20
21 namespace lldb_private {
22
23 class StopInfoMachException : public StopInfo
24 {
25 public:
26     //------------------------------------------------------------------
27     // Constructors and Destructors
28     //------------------------------------------------------------------
29     StopInfoMachException (Thread &thread, 
30                            uint32_t exc_type, 
31                            uint32_t exc_data_count,
32                            uint64_t exc_code, 
33                            uint64_t exc_subcode) :
34         StopInfo (thread, exc_type),
35         m_exc_data_count (exc_data_count),
36         m_exc_code (exc_code),
37         m_exc_subcode (exc_subcode)
38     {
39     }
40
41     ~StopInfoMachException() override = default;
42
43     lldb::StopReason
44     GetStopReason() const override
45     {
46         return lldb::eStopReasonException;
47     }
48
49     const char *
50     GetDescription() override;
51
52     // Since some mach exceptions will be reported as breakpoints, signals,
53     // or trace, we use this static accessor which will translate the mach
54     // exception into the correct StopInfo.
55     static lldb::StopInfoSP
56     CreateStopReasonWithMachException (Thread &thread, 
57                                        uint32_t exc_type, 
58                                        uint32_t exc_data_count,
59                                        uint64_t exc_code, 
60                                        uint64_t exc_sub_code,
61                                        uint64_t exc_sub_sub_code,
62                                        bool pc_already_adjusted = true,
63                                        bool adjust_pc_if_needed = false);
64
65 protected:
66     uint32_t m_exc_data_count;
67     uint64_t m_exc_code;
68     uint64_t m_exc_subcode;
69 };
70
71 } // namespace lldb_private
72
73 #endif // liblldb_StopInfoMachException_h_