1*0b57cec5SDimitry Andric //===-- SBModuleSpec.cpp --------------------------------------------------===//
2*0b57cec5SDimitry Andric //
3*0b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*0b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5*0b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*0b57cec5SDimitry Andric //
7*0b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
8*0b57cec5SDimitry Andric
9*0b57cec5SDimitry Andric #include "lldb/API/SBModuleSpec.h"
10*0b57cec5SDimitry Andric #include "SBReproducerPrivate.h"
11*0b57cec5SDimitry Andric #include "Utils.h"
12*0b57cec5SDimitry Andric #include "lldb/API/SBStream.h"
13*0b57cec5SDimitry Andric #include "lldb/Core/Module.h"
14*0b57cec5SDimitry Andric #include "lldb/Core/ModuleSpec.h"
15*0b57cec5SDimitry Andric #include "lldb/Host/Host.h"
16*0b57cec5SDimitry Andric #include "lldb/Symbol/ObjectFile.h"
17*0b57cec5SDimitry Andric #include "lldb/Utility/Stream.h"
18*0b57cec5SDimitry Andric
19*0b57cec5SDimitry Andric using namespace lldb;
20*0b57cec5SDimitry Andric using namespace lldb_private;
21*0b57cec5SDimitry Andric
SBModuleSpec()22*0b57cec5SDimitry Andric SBModuleSpec::SBModuleSpec() : m_opaque_up(new lldb_private::ModuleSpec()) {
23*0b57cec5SDimitry Andric LLDB_RECORD_CONSTRUCTOR_NO_ARGS(SBModuleSpec);
24*0b57cec5SDimitry Andric }
25*0b57cec5SDimitry Andric
SBModuleSpec(const SBModuleSpec & rhs)26*0b57cec5SDimitry Andric SBModuleSpec::SBModuleSpec(const SBModuleSpec &rhs) : m_opaque_up() {
27*0b57cec5SDimitry Andric LLDB_RECORD_CONSTRUCTOR(SBModuleSpec, (const lldb::SBModuleSpec &), rhs);
28*0b57cec5SDimitry Andric
29*0b57cec5SDimitry Andric m_opaque_up = clone(rhs.m_opaque_up);
30*0b57cec5SDimitry Andric }
31*0b57cec5SDimitry Andric
operator =(const SBModuleSpec & rhs)32*0b57cec5SDimitry Andric const SBModuleSpec &SBModuleSpec::operator=(const SBModuleSpec &rhs) {
33*0b57cec5SDimitry Andric LLDB_RECORD_METHOD(const lldb::SBModuleSpec &,
34*0b57cec5SDimitry Andric SBModuleSpec, operator=,(const lldb::SBModuleSpec &), rhs);
35*0b57cec5SDimitry Andric
36*0b57cec5SDimitry Andric if (this != &rhs)
37*0b57cec5SDimitry Andric m_opaque_up = clone(rhs.m_opaque_up);
38*0b57cec5SDimitry Andric return LLDB_RECORD_RESULT(*this);
39*0b57cec5SDimitry Andric }
40*0b57cec5SDimitry Andric
41*0b57cec5SDimitry Andric SBModuleSpec::~SBModuleSpec() = default;
42*0b57cec5SDimitry Andric
IsValid() const43*0b57cec5SDimitry Andric bool SBModuleSpec::IsValid() const {
44*0b57cec5SDimitry Andric LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBModuleSpec, IsValid);
45*0b57cec5SDimitry Andric return this->operator bool();
46*0b57cec5SDimitry Andric }
operator bool() const47*0b57cec5SDimitry Andric SBModuleSpec::operator bool() const {
48*0b57cec5SDimitry Andric LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBModuleSpec, operator bool);
49*0b57cec5SDimitry Andric
50*0b57cec5SDimitry Andric return m_opaque_up->operator bool();
51*0b57cec5SDimitry Andric }
52*0b57cec5SDimitry Andric
Clear()53*0b57cec5SDimitry Andric void SBModuleSpec::Clear() {
54*0b57cec5SDimitry Andric LLDB_RECORD_METHOD_NO_ARGS(void, SBModuleSpec, Clear);
55*0b57cec5SDimitry Andric
56*0b57cec5SDimitry Andric m_opaque_up->Clear();
57*0b57cec5SDimitry Andric }
58*0b57cec5SDimitry Andric
GetFileSpec()59*0b57cec5SDimitry Andric SBFileSpec SBModuleSpec::GetFileSpec() {
60*0b57cec5SDimitry Andric LLDB_RECORD_METHOD_NO_ARGS(lldb::SBFileSpec, SBModuleSpec, GetFileSpec);
61*0b57cec5SDimitry Andric
62*0b57cec5SDimitry Andric SBFileSpec sb_spec(m_opaque_up->GetFileSpec());
63*0b57cec5SDimitry Andric return LLDB_RECORD_RESULT(sb_spec);
64*0b57cec5SDimitry Andric }
65*0b57cec5SDimitry Andric
SetFileSpec(const lldb::SBFileSpec & sb_spec)66*0b57cec5SDimitry Andric void SBModuleSpec::SetFileSpec(const lldb::SBFileSpec &sb_spec) {
67*0b57cec5SDimitry Andric LLDB_RECORD_METHOD(void, SBModuleSpec, SetFileSpec,
68*0b57cec5SDimitry Andric (const lldb::SBFileSpec &), sb_spec);
69*0b57cec5SDimitry Andric
70*0b57cec5SDimitry Andric m_opaque_up->GetFileSpec() = *sb_spec;
71*0b57cec5SDimitry Andric }
72*0b57cec5SDimitry Andric
GetPlatformFileSpec()73*0b57cec5SDimitry Andric lldb::SBFileSpec SBModuleSpec::GetPlatformFileSpec() {
74*0b57cec5SDimitry Andric LLDB_RECORD_METHOD_NO_ARGS(lldb::SBFileSpec, SBModuleSpec,
75*0b57cec5SDimitry Andric GetPlatformFileSpec);
76*0b57cec5SDimitry Andric
77*0b57cec5SDimitry Andric return LLDB_RECORD_RESULT(SBFileSpec(m_opaque_up->GetPlatformFileSpec()));
78*0b57cec5SDimitry Andric }
79*0b57cec5SDimitry Andric
SetPlatformFileSpec(const lldb::SBFileSpec & sb_spec)80*0b57cec5SDimitry Andric void SBModuleSpec::SetPlatformFileSpec(const lldb::SBFileSpec &sb_spec) {
81*0b57cec5SDimitry Andric LLDB_RECORD_METHOD(void, SBModuleSpec, SetPlatformFileSpec,
82*0b57cec5SDimitry Andric (const lldb::SBFileSpec &), sb_spec);
83*0b57cec5SDimitry Andric
84*0b57cec5SDimitry Andric m_opaque_up->GetPlatformFileSpec() = *sb_spec;
85*0b57cec5SDimitry Andric }
86*0b57cec5SDimitry Andric
GetSymbolFileSpec()87*0b57cec5SDimitry Andric lldb::SBFileSpec SBModuleSpec::GetSymbolFileSpec() {
88*0b57cec5SDimitry Andric LLDB_RECORD_METHOD_NO_ARGS(lldb::SBFileSpec, SBModuleSpec, GetSymbolFileSpec);
89*0b57cec5SDimitry Andric
90*0b57cec5SDimitry Andric return LLDB_RECORD_RESULT(SBFileSpec(m_opaque_up->GetSymbolFileSpec()));
91*0b57cec5SDimitry Andric }
92*0b57cec5SDimitry Andric
SetSymbolFileSpec(const lldb::SBFileSpec & sb_spec)93*0b57cec5SDimitry Andric void SBModuleSpec::SetSymbolFileSpec(const lldb::SBFileSpec &sb_spec) {
94*0b57cec5SDimitry Andric LLDB_RECORD_METHOD(void, SBModuleSpec, SetSymbolFileSpec,
95*0b57cec5SDimitry Andric (const lldb::SBFileSpec &), sb_spec);
96*0b57cec5SDimitry Andric
97*0b57cec5SDimitry Andric m_opaque_up->GetSymbolFileSpec() = *sb_spec;
98*0b57cec5SDimitry Andric }
99*0b57cec5SDimitry Andric
GetObjectName()100*0b57cec5SDimitry Andric const char *SBModuleSpec::GetObjectName() {
101*0b57cec5SDimitry Andric LLDB_RECORD_METHOD_NO_ARGS(const char *, SBModuleSpec, GetObjectName);
102*0b57cec5SDimitry Andric
103*0b57cec5SDimitry Andric return m_opaque_up->GetObjectName().GetCString();
104*0b57cec5SDimitry Andric }
105*0b57cec5SDimitry Andric
SetObjectName(const char * name)106*0b57cec5SDimitry Andric void SBModuleSpec::SetObjectName(const char *name) {
107*0b57cec5SDimitry Andric LLDB_RECORD_METHOD(void, SBModuleSpec, SetObjectName, (const char *), name);
108*0b57cec5SDimitry Andric
109*0b57cec5SDimitry Andric m_opaque_up->GetObjectName().SetCString(name);
110*0b57cec5SDimitry Andric }
111*0b57cec5SDimitry Andric
GetTriple()112*0b57cec5SDimitry Andric const char *SBModuleSpec::GetTriple() {
113*0b57cec5SDimitry Andric LLDB_RECORD_METHOD_NO_ARGS(const char *, SBModuleSpec, GetTriple);
114*0b57cec5SDimitry Andric
115*0b57cec5SDimitry Andric std::string triple(m_opaque_up->GetArchitecture().GetTriple().str());
116*0b57cec5SDimitry Andric // Unique the string so we don't run into ownership issues since the const
117*0b57cec5SDimitry Andric // strings put the string into the string pool once and the strings never
118*0b57cec5SDimitry Andric // comes out
119*0b57cec5SDimitry Andric ConstString const_triple(triple.c_str());
120*0b57cec5SDimitry Andric return const_triple.GetCString();
121*0b57cec5SDimitry Andric }
122*0b57cec5SDimitry Andric
SetTriple(const char * triple)123*0b57cec5SDimitry Andric void SBModuleSpec::SetTriple(const char *triple) {
124*0b57cec5SDimitry Andric LLDB_RECORD_METHOD(void, SBModuleSpec, SetTriple, (const char *), triple);
125*0b57cec5SDimitry Andric
126*0b57cec5SDimitry Andric m_opaque_up->GetArchitecture().SetTriple(triple);
127*0b57cec5SDimitry Andric }
128*0b57cec5SDimitry Andric
GetUUIDBytes()129*0b57cec5SDimitry Andric const uint8_t *SBModuleSpec::GetUUIDBytes() {
130*0b57cec5SDimitry Andric return m_opaque_up->GetUUID().GetBytes().data();
131*0b57cec5SDimitry Andric }
132*0b57cec5SDimitry Andric
GetUUIDLength()133*0b57cec5SDimitry Andric size_t SBModuleSpec::GetUUIDLength() {
134*0b57cec5SDimitry Andric LLDB_RECORD_METHOD_NO_ARGS(size_t, SBModuleSpec, GetUUIDLength);
135*0b57cec5SDimitry Andric
136*0b57cec5SDimitry Andric return m_opaque_up->GetUUID().GetBytes().size();
137*0b57cec5SDimitry Andric }
138*0b57cec5SDimitry Andric
SetUUIDBytes(const uint8_t * uuid,size_t uuid_len)139*0b57cec5SDimitry Andric bool SBModuleSpec::SetUUIDBytes(const uint8_t *uuid, size_t uuid_len) {
140*0b57cec5SDimitry Andric m_opaque_up->GetUUID() = UUID::fromOptionalData(uuid, uuid_len);
141*0b57cec5SDimitry Andric return m_opaque_up->GetUUID().IsValid();
142*0b57cec5SDimitry Andric }
143*0b57cec5SDimitry Andric
GetDescription(lldb::SBStream & description)144*0b57cec5SDimitry Andric bool SBModuleSpec::GetDescription(lldb::SBStream &description) {
145*0b57cec5SDimitry Andric LLDB_RECORD_METHOD(bool, SBModuleSpec, GetDescription, (lldb::SBStream &),
146*0b57cec5SDimitry Andric description);
147*0b57cec5SDimitry Andric
148*0b57cec5SDimitry Andric m_opaque_up->Dump(description.ref());
149*0b57cec5SDimitry Andric return true;
150*0b57cec5SDimitry Andric }
151*0b57cec5SDimitry Andric
SBModuleSpecList()152*0b57cec5SDimitry Andric SBModuleSpecList::SBModuleSpecList() : m_opaque_up(new ModuleSpecList()) {
153*0b57cec5SDimitry Andric LLDB_RECORD_CONSTRUCTOR_NO_ARGS(SBModuleSpecList);
154*0b57cec5SDimitry Andric }
155*0b57cec5SDimitry Andric
SBModuleSpecList(const SBModuleSpecList & rhs)156*0b57cec5SDimitry Andric SBModuleSpecList::SBModuleSpecList(const SBModuleSpecList &rhs)
157*0b57cec5SDimitry Andric : m_opaque_up(new ModuleSpecList(*rhs.m_opaque_up)) {
158*0b57cec5SDimitry Andric LLDB_RECORD_CONSTRUCTOR(SBModuleSpecList, (const lldb::SBModuleSpecList &),
159*0b57cec5SDimitry Andric rhs);
160*0b57cec5SDimitry Andric }
161*0b57cec5SDimitry Andric
operator =(const SBModuleSpecList & rhs)162*0b57cec5SDimitry Andric SBModuleSpecList &SBModuleSpecList::operator=(const SBModuleSpecList &rhs) {
163*0b57cec5SDimitry Andric LLDB_RECORD_METHOD(
164*0b57cec5SDimitry Andric lldb::SBModuleSpecList &,
165*0b57cec5SDimitry Andric SBModuleSpecList, operator=,(const lldb::SBModuleSpecList &), rhs);
166*0b57cec5SDimitry Andric
167*0b57cec5SDimitry Andric if (this != &rhs)
168*0b57cec5SDimitry Andric *m_opaque_up = *rhs.m_opaque_up;
169*0b57cec5SDimitry Andric return LLDB_RECORD_RESULT(*this);
170*0b57cec5SDimitry Andric }
171*0b57cec5SDimitry Andric
172*0b57cec5SDimitry Andric SBModuleSpecList::~SBModuleSpecList() = default;
173*0b57cec5SDimitry Andric
GetModuleSpecifications(const char * path)174*0b57cec5SDimitry Andric SBModuleSpecList SBModuleSpecList::GetModuleSpecifications(const char *path) {
175*0b57cec5SDimitry Andric LLDB_RECORD_STATIC_METHOD(lldb::SBModuleSpecList, SBModuleSpecList,
176*0b57cec5SDimitry Andric GetModuleSpecifications, (const char *), path);
177*0b57cec5SDimitry Andric
178*0b57cec5SDimitry Andric SBModuleSpecList specs;
179*0b57cec5SDimitry Andric FileSpec file_spec(path);
180*0b57cec5SDimitry Andric FileSystem::Instance().Resolve(file_spec);
181*0b57cec5SDimitry Andric Host::ResolveExecutableInBundle(file_spec);
182*0b57cec5SDimitry Andric ObjectFile::GetModuleSpecifications(file_spec, 0, 0, *specs.m_opaque_up);
183*0b57cec5SDimitry Andric return LLDB_RECORD_RESULT(specs);
184*0b57cec5SDimitry Andric }
185*0b57cec5SDimitry Andric
Append(const SBModuleSpec & spec)186*0b57cec5SDimitry Andric void SBModuleSpecList::Append(const SBModuleSpec &spec) {
187*0b57cec5SDimitry Andric LLDB_RECORD_METHOD(void, SBModuleSpecList, Append,
188*0b57cec5SDimitry Andric (const lldb::SBModuleSpec &), spec);
189*0b57cec5SDimitry Andric
190*0b57cec5SDimitry Andric m_opaque_up->Append(*spec.m_opaque_up);
191*0b57cec5SDimitry Andric }
192*0b57cec5SDimitry Andric
Append(const SBModuleSpecList & spec_list)193*0b57cec5SDimitry Andric void SBModuleSpecList::Append(const SBModuleSpecList &spec_list) {
194*0b57cec5SDimitry Andric LLDB_RECORD_METHOD(void, SBModuleSpecList, Append,
195*0b57cec5SDimitry Andric (const lldb::SBModuleSpecList &), spec_list);
196*0b57cec5SDimitry Andric
197*0b57cec5SDimitry Andric m_opaque_up->Append(*spec_list.m_opaque_up);
198*0b57cec5SDimitry Andric }
199*0b57cec5SDimitry Andric
GetSize()200*0b57cec5SDimitry Andric size_t SBModuleSpecList::GetSize() {
201*0b57cec5SDimitry Andric LLDB_RECORD_METHOD_NO_ARGS(size_t, SBModuleSpecList, GetSize);
202*0b57cec5SDimitry Andric
203*0b57cec5SDimitry Andric return m_opaque_up->GetSize();
204*0b57cec5SDimitry Andric }
205*0b57cec5SDimitry Andric
GetSpecAtIndex(size_t i)206*0b57cec5SDimitry Andric SBModuleSpec SBModuleSpecList::GetSpecAtIndex(size_t i) {
207*0b57cec5SDimitry Andric LLDB_RECORD_METHOD(lldb::SBModuleSpec, SBModuleSpecList, GetSpecAtIndex,
208*0b57cec5SDimitry Andric (size_t), i);
209*0b57cec5SDimitry Andric
210*0b57cec5SDimitry Andric SBModuleSpec sb_module_spec;
211*0b57cec5SDimitry Andric m_opaque_up->GetModuleSpecAtIndex(i, *sb_module_spec.m_opaque_up);
212*0b57cec5SDimitry Andric return LLDB_RECORD_RESULT(sb_module_spec);
213*0b57cec5SDimitry Andric }
214*0b57cec5SDimitry Andric
215*0b57cec5SDimitry Andric SBModuleSpec
FindFirstMatchingSpec(const SBModuleSpec & match_spec)216*0b57cec5SDimitry Andric SBModuleSpecList::FindFirstMatchingSpec(const SBModuleSpec &match_spec) {
217*0b57cec5SDimitry Andric LLDB_RECORD_METHOD(lldb::SBModuleSpec, SBModuleSpecList,
218*0b57cec5SDimitry Andric FindFirstMatchingSpec, (const lldb::SBModuleSpec &),
219*0b57cec5SDimitry Andric match_spec);
220*0b57cec5SDimitry Andric
221*0b57cec5SDimitry Andric SBModuleSpec sb_module_spec;
222*0b57cec5SDimitry Andric m_opaque_up->FindMatchingModuleSpec(*match_spec.m_opaque_up,
223*0b57cec5SDimitry Andric *sb_module_spec.m_opaque_up);
224*0b57cec5SDimitry Andric return LLDB_RECORD_RESULT(sb_module_spec);
225*0b57cec5SDimitry Andric }
226*0b57cec5SDimitry Andric
227*0b57cec5SDimitry Andric SBModuleSpecList
FindMatchingSpecs(const SBModuleSpec & match_spec)228*0b57cec5SDimitry Andric SBModuleSpecList::FindMatchingSpecs(const SBModuleSpec &match_spec) {
229*0b57cec5SDimitry Andric LLDB_RECORD_METHOD(lldb::SBModuleSpecList, SBModuleSpecList,
230*0b57cec5SDimitry Andric FindMatchingSpecs, (const lldb::SBModuleSpec &),
231*0b57cec5SDimitry Andric match_spec);
232*0b57cec5SDimitry Andric
233*0b57cec5SDimitry Andric SBModuleSpecList specs;
234*0b57cec5SDimitry Andric m_opaque_up->FindMatchingModuleSpecs(*match_spec.m_opaque_up,
235*0b57cec5SDimitry Andric *specs.m_opaque_up);
236*0b57cec5SDimitry Andric return LLDB_RECORD_RESULT(specs);
237*0b57cec5SDimitry Andric }
238*0b57cec5SDimitry Andric
GetDescription(lldb::SBStream & description)239*0b57cec5SDimitry Andric bool SBModuleSpecList::GetDescription(lldb::SBStream &description) {
240*0b57cec5SDimitry Andric LLDB_RECORD_METHOD(bool, SBModuleSpecList, GetDescription, (lldb::SBStream &),
241*0b57cec5SDimitry Andric description);
242*0b57cec5SDimitry Andric
243*0b57cec5SDimitry Andric m_opaque_up->Dump(description.ref());
244*0b57cec5SDimitry Andric return true;
245*0b57cec5SDimitry Andric }
246*0b57cec5SDimitry Andric
247*0b57cec5SDimitry Andric namespace lldb_private {
248*0b57cec5SDimitry Andric namespace repro {
249*0b57cec5SDimitry Andric
250*0b57cec5SDimitry Andric template <>
RegisterMethods(Registry & R)251*0b57cec5SDimitry Andric void RegisterMethods<SBModuleSpec>(Registry &R) {
252*0b57cec5SDimitry Andric LLDB_REGISTER_CONSTRUCTOR(SBModuleSpec, ());
253*0b57cec5SDimitry Andric LLDB_REGISTER_CONSTRUCTOR(SBModuleSpec, (const lldb::SBModuleSpec &));
254*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD(const lldb::SBModuleSpec &,
255*0b57cec5SDimitry Andric SBModuleSpec, operator=,(const lldb::SBModuleSpec &));
256*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD_CONST(bool, SBModuleSpec, IsValid, ());
257*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD_CONST(bool, SBModuleSpec, operator bool, ());
258*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD(void, SBModuleSpec, Clear, ());
259*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD(lldb::SBFileSpec, SBModuleSpec, GetFileSpec, ());
260*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD(void, SBModuleSpec, SetFileSpec,
261*0b57cec5SDimitry Andric (const lldb::SBFileSpec &));
262*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD(lldb::SBFileSpec, SBModuleSpec, GetPlatformFileSpec,
263*0b57cec5SDimitry Andric ());
264*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD(void, SBModuleSpec, SetPlatformFileSpec,
265*0b57cec5SDimitry Andric (const lldb::SBFileSpec &));
266*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD(lldb::SBFileSpec, SBModuleSpec, GetSymbolFileSpec, ());
267*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD(void, SBModuleSpec, SetSymbolFileSpec,
268*0b57cec5SDimitry Andric (const lldb::SBFileSpec &));
269*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD(const char *, SBModuleSpec, GetObjectName, ());
270*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD(void, SBModuleSpec, SetObjectName, (const char *));
271*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD(const char *, SBModuleSpec, GetTriple, ());
272*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD(void, SBModuleSpec, SetTriple, (const char *));
273*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD(size_t, SBModuleSpec, GetUUIDLength, ());
274*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD(bool, SBModuleSpec, GetDescription,
275*0b57cec5SDimitry Andric (lldb::SBStream &));
276*0b57cec5SDimitry Andric LLDB_REGISTER_CONSTRUCTOR(SBModuleSpecList, ());
277*0b57cec5SDimitry Andric LLDB_REGISTER_CONSTRUCTOR(SBModuleSpecList,
278*0b57cec5SDimitry Andric (const lldb::SBModuleSpecList &));
279*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD(
280*0b57cec5SDimitry Andric lldb::SBModuleSpecList &,
281*0b57cec5SDimitry Andric SBModuleSpecList, operator=,(const lldb::SBModuleSpecList &));
282*0b57cec5SDimitry Andric LLDB_REGISTER_STATIC_METHOD(lldb::SBModuleSpecList, SBModuleSpecList,
283*0b57cec5SDimitry Andric GetModuleSpecifications, (const char *));
284*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD(void, SBModuleSpecList, Append,
285*0b57cec5SDimitry Andric (const lldb::SBModuleSpec &));
286*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD(void, SBModuleSpecList, Append,
287*0b57cec5SDimitry Andric (const lldb::SBModuleSpecList &));
288*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD(size_t, SBModuleSpecList, GetSize, ());
289*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD(lldb::SBModuleSpec, SBModuleSpecList, GetSpecAtIndex,
290*0b57cec5SDimitry Andric (size_t));
291*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD(lldb::SBModuleSpec, SBModuleSpecList,
292*0b57cec5SDimitry Andric FindFirstMatchingSpec, (const lldb::SBModuleSpec &));
293*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD(lldb::SBModuleSpecList, SBModuleSpecList,
294*0b57cec5SDimitry Andric FindMatchingSpecs, (const lldb::SBModuleSpec &));
295*0b57cec5SDimitry Andric LLDB_REGISTER_METHOD(bool, SBModuleSpecList, GetDescription,
296*0b57cec5SDimitry Andric (lldb::SBStream &));
297*0b57cec5SDimitry Andric }
298*0b57cec5SDimitry Andric
299*0b57cec5SDimitry Andric }
300*0b57cec5SDimitry Andric }
301