]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/llvm/tools/lldb/source/Plugins/UnwindAssembly/x86/UnwindAssembly-x86.h
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / llvm / tools / lldb / source / Plugins / UnwindAssembly / x86 / UnwindAssembly-x86.h
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_