Home | History | Annotate | Download | only in x86
      1 //===-- UnwindAssembly-x86.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_UnwindAssembly_x86_h_
     11 #define liblldb_UnwindAssembly_x86_h_
     12 
     13 #include "llvm-c/Disassembler.h"
     14 
     15 #include "lldb/lldb-private.h"
     16 #include "lldb/Target/UnwindAssembly.h"
     17 
     18 class UnwindAssembly_x86 : public lldb_private::UnwindAssembly
     19 {
     20 public:
     21 
     22     ~UnwindAssembly_x86 ();
     23 
     24     virtual bool
     25     GetNonCallSiteUnwindPlanFromAssembly (lldb_private::AddressRange& func,
     26                                           lldb_private::Thread& thread,
     27                                           lldb_private::UnwindPlan& unwind_plan);
     28 
     29     virtual bool
     30     GetFastUnwindPlan (lldb_private::AddressRange& func,
     31                        lldb_private::Thread& thread,
     32                        lldb_private::UnwindPlan &unwind_plan);
     33 
     34     // thread may be NULL in which case we only use the Target (e.g. if this is called pre-process-launch).
     35     virtual bool
     36     FirstNonPrologueInsn (lldb_private::AddressRange& func,
     37                           const lldb_private::ExecutionContext &exe_ctx,
     38                           lldb_private::Address& first_non_prologue_insn);
     39 
     40     static lldb_private::UnwindAssembly *
     41     CreateInstance (const lldb_private::ArchSpec &arch);
     42 
     43 
     44     //------------------------------------------------------------------
     45     // PluginInterface protocol
     46     //------------------------------------------------------------------
     47     static void
     48     Initialize();
     49 
     50     static void
     51     Terminate();
     52 
     53     static lldb_private::ConstString
     54     GetPluginNameStatic();
     55 
     56     static const char *
     57     GetPluginDescriptionStatic();
     58 
     59     virtual lldb_private::ConstString
     60     GetPluginName();
     61 
     62     virtual uint32_t
     63     GetPluginVersion();
     64 
     65 private:
     66     UnwindAssembly_x86 (const lldb_private::ArchSpec &arch, int cpu);
     67 
     68     int m_cpu;
     69     lldb_private::ArchSpec m_arch;
     70 };
     71 
     72 
     73 #endif // liblldb_UnwindAssembly_x86_h_
     74