UnwindAssemblyInstEmulation.cpp revision f6e287a873007543f3b419a71546ab8f007be90b
1f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton//===-- UnwindAssemblyInstEmulation.cpp --------------------------*- C++ -*-===//
2f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton//
3f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton//                     The LLVM Compiler Infrastructure
4f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton//
5f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton// This file is distributed under the University of Illinois Open Source
6f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton// License. See LICENSE.TXT for details.
7f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton//
8f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton//===----------------------------------------------------------------------===//
9f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton
10f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton#include "UnwindAssemblyInstEmulation.h"
11f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton
12f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton#include "llvm-c/EnhancedDisassembly.h"
13f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton
14f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton#include "lldb/Core/Address.h"
15f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton#include "lldb/Core/Error.h"
16f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton#include "lldb/Core/ArchSpec.h"
17f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton#include "lldb/Core/PluginManager.h"
18f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton#include "lldb/Symbol/UnwindPlan.h"
19f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton#include "lldb/Target/ExecutionContext.h"
20f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton#include "lldb/Target/Process.h"
21f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton#include "lldb/Target/RegisterContext.h"
22f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton#include "lldb/Target/Thread.h"
23f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton#include "lldb/Target/Target.h"
24f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton#include "lldb/Target/UnwindAssemblyProfiler.h"
25f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton
26f6e287a873007543f3b419a71546ab8f007be90bGreg Claytonusing namespace lldb;
27f6e287a873007543f3b419a71546ab8f007be90bGreg Claytonusing namespace lldb_private;
28f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton
29f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton
30f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton
31f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton//-----------------------------------------------------------------------------------------------
32f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton//  UnwindAssemblyParser_x86 method definitions
33f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton//-----------------------------------------------------------------------------------------------
34f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton
35f6e287a873007543f3b419a71546ab8f007be90bGreg Claytonbool
36f6e287a873007543f3b419a71546ab8f007be90bGreg ClaytonUnwindAssemblyInstEmulation::GetNonCallSiteUnwindPlanFromAssembly (AddressRange& func, Thread& thread, UnwindPlan& unwind_plan)
37f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton{
38f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton    return false;
39f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton}
40f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton
41f6e287a873007543f3b419a71546ab8f007be90bGreg Claytonbool
42f6e287a873007543f3b419a71546ab8f007be90bGreg ClaytonUnwindAssemblyInstEmulation::GetFastUnwindPlan (AddressRange& func, Thread& thread, UnwindPlan &unwind_plan)
43f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton{
44f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton    return false;
45f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton}
46f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton
47f6e287a873007543f3b419a71546ab8f007be90bGreg Claytonbool
48f6e287a873007543f3b419a71546ab8f007be90bGreg ClaytonUnwindAssemblyInstEmulation::FirstNonPrologueInsn (AddressRange& func, Target& target, Thread* thread, Address& first_non_prologue_insn)
49f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton{
50f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton    return false;
51f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton}
52f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton
53f6e287a873007543f3b419a71546ab8f007be90bGreg ClaytonUnwindAssemblyProfiler *
54f6e287a873007543f3b419a71546ab8f007be90bGreg ClaytonUnwindAssemblyInstEmulation::CreateInstance (const ArchSpec &arch)
55f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton{
56f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton    return NULL;
57f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton}
58f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton
59f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton
60f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton//------------------------------------------------------------------
61f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton// PluginInterface protocol in UnwindAssemblyParser_x86
62f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton//------------------------------------------------------------------
63f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton
64f6e287a873007543f3b419a71546ab8f007be90bGreg Claytonconst char *
65f6e287a873007543f3b419a71546ab8f007be90bGreg ClaytonUnwindAssemblyInstEmulation::GetPluginName()
66f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton{
67f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton    return "UnwindAssemblyInstEmulation";
68f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton}
69f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton
70f6e287a873007543f3b419a71546ab8f007be90bGreg Claytonconst char *
71f6e287a873007543f3b419a71546ab8f007be90bGreg ClaytonUnwindAssemblyInstEmulation::GetShortPluginName()
72f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton{
73f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton    return "unwindassembly.inst-emulation";
74f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton}
75f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton
76f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton
77f6e287a873007543f3b419a71546ab8f007be90bGreg Claytonuint32_t
78f6e287a873007543f3b419a71546ab8f007be90bGreg ClaytonUnwindAssemblyInstEmulation::GetPluginVersion()
79f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton{
80f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton    return 1;
81f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton}
82f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton
83f6e287a873007543f3b419a71546ab8f007be90bGreg Claytonvoid
84f6e287a873007543f3b419a71546ab8f007be90bGreg ClaytonUnwindAssemblyInstEmulation::Initialize()
85f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton{
86f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton    PluginManager::RegisterPlugin (GetPluginNameStatic(),
87f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton                                   GetPluginDescriptionStatic(),
88f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton                                   CreateInstance);
89f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton}
90f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton
91f6e287a873007543f3b419a71546ab8f007be90bGreg Claytonvoid
92f6e287a873007543f3b419a71546ab8f007be90bGreg ClaytonUnwindAssemblyInstEmulation::Terminate()
93f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton{
94f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton    PluginManager::UnregisterPlugin (CreateInstance);
95f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton}
96f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton
97f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton
98f6e287a873007543f3b419a71546ab8f007be90bGreg Claytonconst char *
99f6e287a873007543f3b419a71546ab8f007be90bGreg ClaytonUnwindAssemblyInstEmulation::GetPluginNameStatic()
100f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton{
101f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton    return "UnwindAssemblyInstEmulation";
102f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton}
103f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton
104f6e287a873007543f3b419a71546ab8f007be90bGreg Claytonconst char *
105f6e287a873007543f3b419a71546ab8f007be90bGreg ClaytonUnwindAssemblyInstEmulation::GetPluginDescriptionStatic()
106f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton{
107f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton    return "Instruction emulation based unwind information.";
108f6e287a873007543f3b419a71546ab8f007be90bGreg Clayton}
109