blob: 6b2c437de252e7c5aa3e55a35bc648a93bd2f99a [file] [log] [blame]
Jim Ingham22777012010-09-23 02:01:19 +00001//===-- 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"
Jim Ingham133e0fb2012-03-03 02:05:11 +000018#include "lldb/Breakpoint/BreakpointResolver.h"
Jim Ingham22777012010-09-23 02:01:19 +000019#include "lldb/Target/LanguageRuntime.h"
20#include "lldb/Target/CPPLanguageRuntime.h"
21#include "lldb/Core/Value.h"
22
23namespace lldb_private {
24
25 class ItaniumABILanguageRuntime :
26 public lldb_private::CPPLanguageRuntime
27 {
28 public:
29 ~ItaniumABILanguageRuntime() { }
30
31 virtual bool
32 IsVTableName (const char *name);
33
Jim Ingham78a685a2011-04-16 00:01:13 +000034 virtual bool
Jim Ingham2837b762011-05-04 03:43:18 +000035 GetDynamicTypeAndAddress (ValueObject &in_value,
36 lldb::DynamicValueType use_dynamic,
37 TypeAndOrName &class_type_or_name,
38 Address &address);
Jim Ingham78a685a2011-04-16 00:01:13 +000039
40 virtual bool
41 CouldHaveDynamicValue (ValueObject &in_value);
42
Jim Ingham22777012010-09-23 02:01:19 +000043 //------------------------------------------------------------------
44 // Static Functions
45 //------------------------------------------------------------------
46 static void
47 Initialize();
48
49 static void
50 Terminate();
51
52 static lldb_private::LanguageRuntime *
53 CreateInstance (Process *process, lldb::LanguageType language);
54
Greg Clayton57abc5d2013-05-10 21:47:16 +000055 static lldb_private::ConstString
56 GetPluginNameStatic();
57
Jim Ingham22777012010-09-23 02:01:19 +000058 //------------------------------------------------------------------
59 // PluginInterface protocol
60 //------------------------------------------------------------------
Greg Clayton57abc5d2013-05-10 21:47:16 +000061 virtual lldb_private::ConstString
Jim Ingham22777012010-09-23 02:01:19 +000062 GetPluginName();
63
Jim Ingham22777012010-09-23 02:01:19 +000064 virtual uint32_t
65 GetPluginVersion();
66
67 virtual void
Sean Callananf2115102010-11-03 22:19:38 +000068 SetExceptionBreakpoints ();
69
70 virtual void
71 ClearExceptionBreakpoints ();
72
73 virtual bool
74 ExceptionBreakpointsExplainStop (lldb::StopInfoSP stop_reason);
Greg Claytona4f42232013-03-11 20:02:03 +000075
Jim Ingham219ba192012-03-05 04:47:34 +000076 virtual lldb::BreakpointResolverSP
77 CreateExceptionResolver (Breakpoint *bkpt, bool catch_bp, bool throw_bp);
Greg Claytona4f42232013-03-11 20:02:03 +000078
Greg Claytonbff78252013-03-11 18:42:51 +000079 virtual lldb::SearchFilterSP
80 CreateExceptionSearchFilter ();
81
Greg Claytona4f42232013-03-11 20:02:03 +000082 protected:
83
Greg Claytonbff78252013-03-11 18:42:51 +000084 lldb::BreakpointResolverSP
Jim Inghamf0fd55e2012-03-06 18:10:38 +000085 CreateExceptionResolver (Breakpoint *bkpt, bool catch_bp, bool throw_bp, bool for_expressions);
86
Greg Claytonbff78252013-03-11 18:42:51 +000087 lldb::BreakpointSP
88 CreateExceptionBreakpoint(bool catch_bp,
89 bool throw_bp,
90 bool for_expressions,
91 bool is_internal);
92
Jim Ingham22777012010-09-23 02:01:19 +000093 private:
94 ItaniumABILanguageRuntime(Process *process) : lldb_private::CPPLanguageRuntime(process) { } // Call CreateInstance instead.
Sean Callananf2115102010-11-03 22:19:38 +000095
96 lldb::BreakpointSP m_cxx_exception_bp_sp;
Jim Ingham22777012010-09-23 02:01:19 +000097 };
98
99} // namespace lldb_private
100
101#endif // liblldb_ItaniumABILanguageRuntime_h_