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_
15 // Other libraries and framework includes
16 #include "llvm-c/Disassembler.h"
19 #include "lldb/lldb-private.h"
20 #include "lldb/Target/UnwindAssembly.h"
22 class UnwindAssembly_x86 : public lldb_private::UnwindAssembly
25 ~UnwindAssembly_x86() override;
28 GetNonCallSiteUnwindPlanFromAssembly(lldb_private::AddressRange& func,
29 lldb_private::Thread& thread,
30 lldb_private::UnwindPlan& unwind_plan) override;
33 AugmentUnwindPlanFromCallSite(lldb_private::AddressRange& func,
34 lldb_private::Thread& thread,
35 lldb_private::UnwindPlan& unwind_plan) override;
38 GetFastUnwindPlan(lldb_private::AddressRange& func,
39 lldb_private::Thread& thread,
40 lldb_private::UnwindPlan &unwind_plan) override;
42 // thread may be NULL in which case we only use the Target (e.g. if this is called pre-process-launch).
44 FirstNonPrologueInsn(lldb_private::AddressRange& func,
45 const lldb_private::ExecutionContext &exe_ctx,
46 lldb_private::Address& first_non_prologue_insn) override;
48 static lldb_private::UnwindAssembly *
49 CreateInstance (const lldb_private::ArchSpec &arch);
51 //------------------------------------------------------------------
52 // PluginInterface protocol
53 //------------------------------------------------------------------
60 static lldb_private::ConstString
61 GetPluginNameStatic();
64 GetPluginDescriptionStatic();
66 lldb_private::ConstString
67 GetPluginName() override;
70 GetPluginVersion() override;
73 UnwindAssembly_x86 (const lldb_private::ArchSpec &arch, int cpu);
76 lldb_private::ArchSpec m_arch;
79 #endif // liblldb_UnwindAssembly_x86_h_