blob: ae7fa991b2b1a631d87c3588cb7551cf3a11d34f [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
55 //------------------------------------------------------------------
56 // PluginInterface protocol
57 //------------------------------------------------------------------
58 virtual const char *
59 GetPluginName();
60
61 virtual const char *
62 GetShortPluginName();
63
64 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);
75
Jim Ingham22777012010-09-23 02:01:19 +000076 protected:
Jim Ingham133e0fb2012-03-03 02:05:11 +000077 virtual lldb::BreakpointSP
78 CreateExceptionBreakpoint (bool catch_bp, bool throw_bp, bool is_internal = false);
79
Jim Ingham22777012010-09-23 02:01:19 +000080 private:
81 ItaniumABILanguageRuntime(Process *process) : lldb_private::CPPLanguageRuntime(process) { } // Call CreateInstance instead.
Sean Callananf2115102010-11-03 22:19:38 +000082
83 lldb::BreakpointSP m_cxx_exception_bp_sp;
Jim Ingham22777012010-09-23 02:01:19 +000084 };
85
86} // namespace lldb_private
87
88#endif // liblldb_ItaniumABILanguageRuntime_h_