1 //===-- UnwindAssembly-x86.h -------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef liblldb_UnwindAssembly_x86_h_
11 #define liblldb_UnwindAssembly_x86_h_
13 #include "llvm-c/Disassembler.h"
15 #include "lldb/lldb-private.h"
16 #include "lldb/Target/UnwindAssembly.h"
18 class UnwindAssembly_x86 : public lldb_private::UnwindAssembly
22 ~UnwindAssembly_x86 ();
25 GetNonCallSiteUnwindPlanFromAssembly (lldb_private::AddressRange& func,
26 lldb_private::Thread& thread,
27 lldb_private::UnwindPlan& unwind_plan);
30 GetFastUnwindPlan (lldb_private::AddressRange& func,
31 lldb_private::Thread& thread,
32 lldb_private::UnwindPlan &unwind_plan);
34 // thread may be NULL in which case we only use the Target (e.g. if this is called pre-process-launch).
36 FirstNonPrologueInsn (lldb_private::AddressRange& func,
37 const lldb_private::ExecutionContext &exe_ctx,
38 lldb_private::Address& first_non_prologue_insn);
40 static lldb_private::UnwindAssembly *
41 CreateInstance (const lldb_private::ArchSpec &arch);
44 //------------------------------------------------------------------
45 // PluginInterface protocol
46 //------------------------------------------------------------------
53 static lldb_private::ConstString
54 GetPluginNameStatic();
57 GetPluginDescriptionStatic();
59 virtual lldb_private::ConstString
66 UnwindAssembly_x86 (const lldb_private::ArchSpec &arch, int cpu);
69 lldb_private::ArchSpec m_arch;
73 #endif // liblldb_UnwindAssembly_x86_h_