1642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham//===-- ItaniumABILanguageRuntime.h ----------------------------------------*- C++ -*-===// 2642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham// 3642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham// The LLVM Compiler Infrastructure 4642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham// 5642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham// This file is distributed under the University of Illinois Open Source 6642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham// License. See LICENSE.TXT for details. 7642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham// 8642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham//===----------------------------------------------------------------------===// 9642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham 10642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham#ifndef liblldb_ItaniumABILanguageRuntime_h_ 11642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham#define liblldb_ItaniumABILanguageRuntime_h_ 12642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham 13642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham// C Includes 14642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham// C++ Includes 15642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham// Other libraries and framework includes 16642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham// Project includes 17642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham#include "lldb/lldb-private.h" 18c105362e1fd33664939811569dc4a540959e7db7Jim Ingham#include "lldb/Breakpoint/BreakpointResolver.h" 19642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham#include "lldb/Target/LanguageRuntime.h" 20642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham#include "lldb/Target/CPPLanguageRuntime.h" 21642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham#include "lldb/Core/Value.h" 22642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham 23642036f22366d47ea8e6f8498bedb92b88f7f79fJim Inghamnamespace lldb_private { 24642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham 25642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham class ItaniumABILanguageRuntime : 26642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham public lldb_private::CPPLanguageRuntime 27642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham { 28642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham public: 29642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham ~ItaniumABILanguageRuntime() { } 30642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham 31642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham virtual bool 32642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham IsVTableName (const char *name); 33642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham 34e41494a9092e15192012a5e0a8a1ffd66c70b8bbJim Ingham virtual bool 3510de7d1db3ec782ea2ccda1f39c0a40b9c301594Jim Ingham GetDynamicTypeAndAddress (ValueObject &in_value, 3610de7d1db3ec782ea2ccda1f39c0a40b9c301594Jim Ingham lldb::DynamicValueType use_dynamic, 3710de7d1db3ec782ea2ccda1f39c0a40b9c301594Jim Ingham TypeAndOrName &class_type_or_name, 3810de7d1db3ec782ea2ccda1f39c0a40b9c301594Jim Ingham Address &address); 39e41494a9092e15192012a5e0a8a1ffd66c70b8bbJim Ingham 40e41494a9092e15192012a5e0a8a1ffd66c70b8bbJim Ingham virtual bool 41e41494a9092e15192012a5e0a8a1ffd66c70b8bbJim Ingham CouldHaveDynamicValue (ValueObject &in_value); 42e41494a9092e15192012a5e0a8a1ffd66c70b8bbJim Ingham 43642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham //------------------------------------------------------------------ 44642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham // Static Functions 45642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham //------------------------------------------------------------------ 46642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham static void 47642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham Initialize(); 48642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham 49642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham static void 50642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham Terminate(); 51642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham 52642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham static lldb_private::LanguageRuntime * 53642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham CreateInstance (Process *process, lldb::LanguageType language); 54642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham 550e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton static lldb_private::ConstString 560e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton GetPluginNameStatic(); 570e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton 58642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham //------------------------------------------------------------------ 59642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham // PluginInterface protocol 60642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham //------------------------------------------------------------------ 610e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton virtual lldb_private::ConstString 62642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham GetPluginName(); 63642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham 64642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham virtual uint32_t 65642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham GetPluginVersion(); 66642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham 67642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham virtual void 6829756d452be39535ded2cff50d9db4df46fe6400Sean Callanan SetExceptionBreakpoints (); 6929756d452be39535ded2cff50d9db4df46fe6400Sean Callanan 7029756d452be39535ded2cff50d9db4df46fe6400Sean Callanan virtual void 7129756d452be39535ded2cff50d9db4df46fe6400Sean Callanan ClearExceptionBreakpoints (); 7229756d452be39535ded2cff50d9db4df46fe6400Sean Callanan 7329756d452be39535ded2cff50d9db4df46fe6400Sean Callanan virtual bool 7429756d452be39535ded2cff50d9db4df46fe6400Sean Callanan ExceptionBreakpointsExplainStop (lldb::StopInfoSP stop_reason); 7519784bd12a0beae5b7930d51dcd9ded53cb08470Greg Clayton 763df164e694d4e03905f8725c46b68b8dcc104debJim Ingham virtual lldb::BreakpointResolverSP 773df164e694d4e03905f8725c46b68b8dcc104debJim Ingham CreateExceptionResolver (Breakpoint *bkpt, bool catch_bp, bool throw_bp); 7819784bd12a0beae5b7930d51dcd9ded53cb08470Greg Clayton 79d96df0a55f0a6e19af3d61d3f7ab5103ff96c543Greg Clayton virtual lldb::SearchFilterSP 80d96df0a55f0a6e19af3d61d3f7ab5103ff96c543Greg Clayton CreateExceptionSearchFilter (); 81d96df0a55f0a6e19af3d61d3f7ab5103ff96c543Greg Clayton 8219784bd12a0beae5b7930d51dcd9ded53cb08470Greg Clayton protected: 8319784bd12a0beae5b7930d51dcd9ded53cb08470Greg Clayton 84d96df0a55f0a6e19af3d61d3f7ab5103ff96c543Greg Clayton lldb::BreakpointResolverSP 8596ccc33f541ca8cafa42f777f1f24247bdf8173aJim Ingham CreateExceptionResolver (Breakpoint *bkpt, bool catch_bp, bool throw_bp, bool for_expressions); 8696ccc33f541ca8cafa42f777f1f24247bdf8173aJim Ingham 87d96df0a55f0a6e19af3d61d3f7ab5103ff96c543Greg Clayton lldb::BreakpointSP 88d96df0a55f0a6e19af3d61d3f7ab5103ff96c543Greg Clayton CreateExceptionBreakpoint(bool catch_bp, 89d96df0a55f0a6e19af3d61d3f7ab5103ff96c543Greg Clayton bool throw_bp, 90d96df0a55f0a6e19af3d61d3f7ab5103ff96c543Greg Clayton bool for_expressions, 91d96df0a55f0a6e19af3d61d3f7ab5103ff96c543Greg Clayton bool is_internal); 92d96df0a55f0a6e19af3d61d3f7ab5103ff96c543Greg Clayton 93642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham private: 94642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham ItaniumABILanguageRuntime(Process *process) : lldb_private::CPPLanguageRuntime(process) { } // Call CreateInstance instead. 9529756d452be39535ded2cff50d9db4df46fe6400Sean Callanan 9629756d452be39535ded2cff50d9db4df46fe6400Sean Callanan lldb::BreakpointSP m_cxx_exception_bp_sp; 97642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham }; 98642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham 99642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham} // namespace lldb_private 100642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham 101642036f22366d47ea8e6f8498bedb92b88f7f79fJim Ingham#endif // liblldb_ItaniumABILanguageRuntime_h_ 102