Home | History | Annotate | Download | only in Target
      1 //===-- UnwindAssembly.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 utility_UnwindAssembly_h_
     11 #define utility_UnwindAssembly_h_
     12 
     13 #include "lldb/lldb-private.h"
     14 #include "lldb/Core/ArchSpec.h"
     15 #include "lldb/Core/PluginInterface.h"
     16 
     17 namespace lldb_private {
     18 
     19 class UnwindAssembly :
     20    public PluginInterface
     21 {
     22 public:
     23     static UnwindAssembly*
     24     FindPlugin (const ArchSpec &arch);
     25 
     26     virtual
     27     ~UnwindAssembly();
     28 
     29     virtual bool
     30     GetNonCallSiteUnwindPlanFromAssembly (AddressRange& func,
     31                                           Thread& thread,
     32                                           UnwindPlan& unwind_plan) = 0;
     33 
     34     virtual bool
     35     GetFastUnwindPlan (AddressRange& func,
     36                        Thread& thread,
     37                        UnwindPlan &unwind_plan) = 0;
     38 
     39     // thread may be NULL in which case we only use the Target (e.g. if this is called pre-process-launch).
     40     virtual bool
     41     FirstNonPrologueInsn (AddressRange& func,
     42                           const lldb_private::ExecutionContext &exe_ctx,
     43                           Address& first_non_prologue_insn) = 0;
     44 
     45 protected:
     46     UnwindAssembly (const ArchSpec &arch);
     47     ArchSpec m_arch;
     48 
     49 private:
     50     UnwindAssembly(); // Outlaw default constructor
     51     DISALLOW_COPY_AND_ASSIGN (UnwindAssembly);
     52 };
     53 
     54 } // namespace lldb_private
     55 
     56 #endif //utility_UnwindAssembly_h_
     57 
     58 
     59