UnwindAssembly.h revision 888a7334344778d1a4edbd58b5852ae4d53ffed9
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 17namespace lldb_private { 18 19class UnwindAssembly : 20 public PluginInterface 21{ 22public: 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 Target& target, 43 Thread* thread, 44 Address& first_non_prologue_insn) = 0; 45 46protected: 47 UnwindAssembly (const ArchSpec &arch); 48 ArchSpec m_arch; 49 50private: 51 UnwindAssembly(); // Outlaw default constructor 52 DISALLOW_COPY_AND_ASSIGN (UnwindAssembly); 53}; 54 55} // namespace lldb_private 56 57#endif //utility_UnwindAssembly_h_ 58 59 60