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 namespace lldb_private { 24 25 class ItaniumABILanguageRuntime : 26 public lldb_private::CPPLanguageRuntime 27 { 28 public: ~ItaniumABILanguageRuntime()29 ~ItaniumABILanguageRuntime() { } 30 31 virtual bool 32 IsVTableName (const char *name); 33 34 virtual bool 35 GetDynamicTypeAndAddress (ValueObject &in_value, 36 lldb::DynamicValueType use_dynamic, 37 TypeAndOrName &class_type_or_name, 38 Address &address); 39 40 virtual bool 41 CouldHaveDynamicValue (ValueObject &in_value); 42 43 //------------------------------------------------------------------ 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 static lldb_private::ConstString 56 GetPluginNameStatic(); 57 58 //------------------------------------------------------------------ 59 // PluginInterface protocol 60 //------------------------------------------------------------------ 61 virtual lldb_private::ConstString 62 GetPluginName(); 63 64 virtual uint32_t 65 GetPluginVersion(); 66 67 virtual void 68 SetExceptionBreakpoints (); 69 70 virtual void 71 ClearExceptionBreakpoints (); 72 73 virtual bool 74 ExceptionBreakpointsExplainStop (lldb::StopInfoSP stop_reason); 75 76 virtual lldb::BreakpointResolverSP 77 CreateExceptionResolver (Breakpoint *bkpt, bool catch_bp, bool throw_bp); 78 79 virtual lldb::SearchFilterSP 80 CreateExceptionSearchFilter (); 81 82 protected: 83 84 lldb::BreakpointResolverSP 85 CreateExceptionResolver (Breakpoint *bkpt, bool catch_bp, bool throw_bp, bool for_expressions); 86 87 lldb::BreakpointSP 88 CreateExceptionBreakpoint(bool catch_bp, 89 bool throw_bp, 90 bool for_expressions, 91 bool is_internal); 92 93 private: ItaniumABILanguageRuntime(Process * process)94 ItaniumABILanguageRuntime(Process *process) : lldb_private::CPPLanguageRuntime(process) { } // Call CreateInstance instead. 95 96 lldb::BreakpointSP m_cxx_exception_bp_sp; 97 }; 98 99 } // namespace lldb_private 100 101 #endif // liblldb_ItaniumABILanguageRuntime_h_ 102