Home | History | Annotate | Download | only in ItaniumABI
      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:
     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:
     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