blob: 85c93d2a166fe6317f7651ce5e80fb1e7adba8de [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 Ingham219ba192012-03-05 04:47:34 +000077 virtual lldb::BreakpointResolverSP
78 CreateExceptionResolver (Breakpoint *bkpt, bool catch_bp, bool throw_bp);
Jim Ingham133e0fb2012-03-03 02:05:11 +000079
Jim Inghamf0fd55e2012-03-06 18:10:38 +000080 virtual lldb::BreakpointResolverSP
81 CreateExceptionResolver (Breakpoint *bkpt, bool catch_bp, bool throw_bp, bool for_expressions);
82
Jim Ingham22777012010-09-23 02:01:19 +000083 private:
84 ItaniumABILanguageRuntime(Process *process) : lldb_private::CPPLanguageRuntime(process) { } // Call CreateInstance instead.
Sean Callananf2115102010-11-03 22:19:38 +000085
86 lldb::BreakpointSP m_cxx_exception_bp_sp;
Jim Ingham22777012010-09-23 02:01:19 +000087 };
88
89} // namespace lldb_private
90
91#endif // liblldb_ItaniumABILanguageRuntime_h_