1254721Semaste//===-- ItaniumABILanguageRuntime.h ----------------------------------------*- C++ -*-===// 2254721Semaste// 3254721Semaste// The LLVM Compiler Infrastructure 4254721Semaste// 5254721Semaste// This file is distributed under the University of Illinois Open Source 6254721Semaste// License. See LICENSE.TXT for details. 7254721Semaste// 8254721Semaste//===----------------------------------------------------------------------===// 9254721Semaste 10254721Semaste#ifndef liblldb_ItaniumABILanguageRuntime_h_ 11254721Semaste#define liblldb_ItaniumABILanguageRuntime_h_ 12254721Semaste 13254721Semaste// C Includes 14254721Semaste// C++ Includes 15254721Semaste// Other libraries and framework includes 16254721Semaste// Project includes 17254721Semaste#include "lldb/lldb-private.h" 18254721Semaste#include "lldb/Breakpoint/BreakpointResolver.h" 19254721Semaste#include "lldb/Target/LanguageRuntime.h" 20254721Semaste#include "lldb/Target/CPPLanguageRuntime.h" 21254721Semaste#include "lldb/Core/Value.h" 22254721Semaste 23254721Semastenamespace lldb_private { 24254721Semaste 25254721Semaste class ItaniumABILanguageRuntime : 26254721Semaste public lldb_private::CPPLanguageRuntime 27254721Semaste { 28254721Semaste public: 29254721Semaste ~ItaniumABILanguageRuntime() { } 30254721Semaste 31254721Semaste virtual bool 32254721Semaste IsVTableName (const char *name); 33254721Semaste 34254721Semaste virtual bool 35254721Semaste GetDynamicTypeAndAddress (ValueObject &in_value, 36254721Semaste lldb::DynamicValueType use_dynamic, 37254721Semaste TypeAndOrName &class_type_or_name, 38254721Semaste Address &address); 39254721Semaste 40254721Semaste virtual bool 41254721Semaste CouldHaveDynamicValue (ValueObject &in_value); 42254721Semaste 43254721Semaste //------------------------------------------------------------------ 44254721Semaste // Static Functions 45254721Semaste //------------------------------------------------------------------ 46254721Semaste static void 47254721Semaste Initialize(); 48254721Semaste 49254721Semaste static void 50254721Semaste Terminate(); 51254721Semaste 52254721Semaste static lldb_private::LanguageRuntime * 53254721Semaste CreateInstance (Process *process, lldb::LanguageType language); 54254721Semaste 55254721Semaste static lldb_private::ConstString 56254721Semaste GetPluginNameStatic(); 57254721Semaste 58254721Semaste //------------------------------------------------------------------ 59254721Semaste // PluginInterface protocol 60254721Semaste //------------------------------------------------------------------ 61254721Semaste virtual lldb_private::ConstString 62254721Semaste GetPluginName(); 63254721Semaste 64254721Semaste virtual uint32_t 65254721Semaste GetPluginVersion(); 66254721Semaste 67254721Semaste virtual void 68254721Semaste SetExceptionBreakpoints (); 69254721Semaste 70254721Semaste virtual void 71254721Semaste ClearExceptionBreakpoints (); 72254721Semaste 73254721Semaste virtual bool 74263367Semaste ExceptionBreakpointsAreSet (); 75263367Semaste 76263367Semaste virtual bool 77254721Semaste ExceptionBreakpointsExplainStop (lldb::StopInfoSP stop_reason); 78254721Semaste 79254721Semaste virtual lldb::BreakpointResolverSP 80254721Semaste CreateExceptionResolver (Breakpoint *bkpt, bool catch_bp, bool throw_bp); 81254721Semaste 82254721Semaste virtual lldb::SearchFilterSP 83254721Semaste CreateExceptionSearchFilter (); 84254721Semaste 85254721Semaste protected: 86254721Semaste 87254721Semaste lldb::BreakpointResolverSP 88254721Semaste CreateExceptionResolver (Breakpoint *bkpt, bool catch_bp, bool throw_bp, bool for_expressions); 89254721Semaste 90254721Semaste lldb::BreakpointSP 91254721Semaste CreateExceptionBreakpoint(bool catch_bp, 92254721Semaste bool throw_bp, 93254721Semaste bool for_expressions, 94254721Semaste bool is_internal); 95254721Semaste 96254721Semaste private: 97254721Semaste ItaniumABILanguageRuntime(Process *process) : lldb_private::CPPLanguageRuntime(process) { } // Call CreateInstance instead. 98254721Semaste 99254721Semaste lldb::BreakpointSP m_cxx_exception_bp_sp; 100254721Semaste }; 101254721Semaste 102254721Semaste} // namespace lldb_private 103254721Semaste 104254721Semaste#endif // liblldb_ItaniumABILanguageRuntime_h_ 105