]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.h
Merge OpenSSL 1.0.2d.
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / source / Plugins / LanguageRuntime / CPlusPlus / ItaniumABI / ItaniumABILanguageRuntime.h
1 //===-- ItaniumABILanguageRuntime.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_ItaniumABILanguageRuntime_h_
11 #define liblldb_ItaniumABILanguageRuntime_h_
12
13 // C Includes
14 // C++ Includes
15 // Other libraries and framework includes
16 // Project includes
17 #include "lldb/lldb-private.h"
18 #include "lldb/Breakpoint/BreakpointResolver.h"
19 #include "lldb/Target/LanguageRuntime.h"
20 #include "lldb/Target/CPPLanguageRuntime.h"
21 #include "lldb/Core/Value.h"
22
23 #include <map>
24 #include <vector>
25
26 namespace lldb_private {
27     
28     class ItaniumABILanguageRuntime :
29     public lldb_private::CPPLanguageRuntime
30     {
31     public:
32         ~ItaniumABILanguageRuntime() { }
33         
34         virtual bool
35         IsVTableName (const char *name);
36         
37         virtual bool
38         GetDynamicTypeAndAddress (ValueObject &in_value, 
39                                   lldb::DynamicValueType use_dynamic, 
40                                   TypeAndOrName &class_type_or_name, 
41                                   Address &address);
42         
43         virtual bool
44         CouldHaveDynamicValue (ValueObject &in_value);
45         
46         //------------------------------------------------------------------
47         // Static Functions
48         //------------------------------------------------------------------
49         static void
50         Initialize();
51         
52         static void
53         Terminate();
54         
55         static lldb_private::LanguageRuntime *
56         CreateInstance (Process *process, lldb::LanguageType language);
57         
58         static lldb_private::ConstString
59         GetPluginNameStatic();
60
61         //------------------------------------------------------------------
62         // PluginInterface protocol
63         //------------------------------------------------------------------
64         virtual lldb_private::ConstString
65         GetPluginName();
66         
67         virtual uint32_t
68         GetPluginVersion();
69         
70         virtual void
71         SetExceptionBreakpoints ();
72         
73         virtual void
74         ClearExceptionBreakpoints ();
75         
76         virtual bool
77         ExceptionBreakpointsAreSet ();
78         
79         virtual bool
80         ExceptionBreakpointsExplainStop (lldb::StopInfoSP stop_reason);
81
82         virtual lldb::BreakpointResolverSP
83         CreateExceptionResolver (Breakpoint *bkpt, bool catch_bp, bool throw_bp);
84         
85         virtual lldb::SearchFilterSP
86         CreateExceptionSearchFilter ();
87
88         virtual size_t
89         GetAlternateManglings(const ConstString &mangled, std::vector<ConstString> &alternates);
90
91     protected:
92
93         lldb::BreakpointResolverSP
94         CreateExceptionResolver (Breakpoint *bkpt, bool catch_bp, bool throw_bp, bool for_expressions);
95
96         lldb::BreakpointSP
97         CreateExceptionBreakpoint(bool catch_bp,
98                                   bool throw_bp,
99                                   bool for_expressions,
100                                   bool is_internal);
101         
102     private:
103         ItaniumABILanguageRuntime(Process *process) : lldb_private::CPPLanguageRuntime(process) { } // Call CreateInstance instead.
104         
105         lldb::BreakpointSP                              m_cxx_exception_bp_sp;
106     };
107     
108 } // namespace lldb_private
109
110 #endif  // liblldb_ItaniumABILanguageRuntime_h_