1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
//===-- RenderScriptRuntime.h -----------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef liblldb_RenderScriptRuntime_h_
#define liblldb_RenderScriptRuntime_h_
// C Includes
// C++ Includes
// Other libraries and framework includes
// Project includes
#include "lldb/lldb-private.h"
#include "lldb/Target/LanguageRuntime.h"
#include "lldb/Target/CPPLanguageRuntime.h"
#include "lldb/Core/Module.h"
namespace lldb_private
{
typedef uint32_t RSSlot;
class RSModuleDescriptor;
struct RSKernelDescriptor
{
public:
RSKernelDescriptor(const RSModuleDescriptor &module, const char *name, uint32_t slot)
: m_module(module)
, m_name(name)
, m_slot(slot)
{
}
void Dump(Stream &strm) const;
const RSModuleDescriptor &m_module;
ConstString m_name;
RSSlot m_slot;
};
struct RSGlobalDescriptor
{
public:
RSGlobalDescriptor(const RSModuleDescriptor &module, const char *name)
: m_module(module)
, m_name(name)
{
}
void Dump(Stream &strm) const;
const RSModuleDescriptor &m_module;
ConstString m_name;
RSSlot m_slot;
};
class RSModuleDescriptor
{
public:
RSModuleDescriptor(const lldb::ModuleSP &module)
: m_module(module)
{
}
~RSModuleDescriptor() {}
bool ParseRSInfo();
void Dump(Stream &strm) const;
const lldb::ModuleSP m_module;
std::vector<RSKernelDescriptor> m_kernels;
std::vector<RSGlobalDescriptor> m_globals;
};
class RenderScriptRuntime : public lldb_private::CPPLanguageRuntime
{
public:
~RenderScriptRuntime() {}
//------------------------------------------------------------------
// Static Functions
//------------------------------------------------------------------
static void Initialize();
static void Terminate();
static lldb_private::LanguageRuntime *CreateInstance(Process *process, lldb::LanguageType language);
static lldb_private::ConstString GetPluginNameStatic();
//------------------------------------------------------------------
// PluginInterface protocol
//------------------------------------------------------------------
virtual lldb_private::ConstString GetPluginName();
virtual uint32_t GetPluginVersion();
virtual bool IsVTableName(const char *name);
virtual bool GetDynamicTypeAndAddress(ValueObject &in_value, lldb::DynamicValueType use_dynamic,
TypeAndOrName &class_type_or_name, Address &address);
virtual bool CouldHaveDynamicValue(ValueObject &in_value);
virtual lldb::BreakpointResolverSP CreateExceptionResolver(Breakpoint *bkpt, bool catch_bp, bool throw_bp);
bool LoadModule(const lldb::ModuleSP &module_sp);
bool ProbeModules(const ModuleList module_list);
void DumpModules(Stream &strm) const;
virtual size_t GetAlternateManglings(const ConstString &mangled, std::vector<ConstString> &alternates) {
return static_cast<size_t>(0);
}
protected:
std::vector<RSModuleDescriptor> m_rsmodules;
private:
RenderScriptRuntime(Process *process); // Call CreateInstance instead.
};
} // namespace lldb_private
#endif // liblldb_RenderScriptRuntime_h_
|