LLDB mainline
ModuleList.h
Go to the documentation of this file.
1//===-- ModuleList.h --------------------------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLDB_CORE_MODULELIST_H
10#define LLDB_CORE_MODULELIST_H
11
12#include "lldb/Core/Address.h"
17#include "lldb/Utility/Status.h"
19#include "lldb/lldb-forward.h"
21#include "lldb/lldb-types.h"
22
23#include "llvm/ADT/DenseSet.h"
24#include "llvm/Support/RWMutex.h"
25
26#include <functional>
27#include <list>
28#include <mutex>
29#include <vector>
30
31#include <cstddef>
32#include <cstdint>
33
34namespace lldb_private {
35class ConstString;
36class FileSpecList;
37class Function;
38class Log;
39class Module;
41class Stream;
42class SymbolContext;
44class SymbolFile;
45class Target;
46class TypeList;
47class UUID;
48class VariableList;
50
52 {
54 "off",
55 "Disable automatically downloading symbols.",
56 },
57 {
59 "background",
60 "Download symbols in the background for images as they appear in the "
61 "backtrace.",
62 },
63 {
65 "foreground",
66 "Download symbols in the foreground for images as they appear in the "
67 "backtrace.",
68 },
69};
70
72 mutable llvm::sys::RWMutex m_symlink_paths_mutex;
74
76
77public:
79
81 bool SetClangModulesCachePath(const FileSpec &path);
82 bool GetEnableExternalLookup() const;
83 bool SetEnableExternalLookup(bool new_value);
84 bool GetEnableLLDBIndexCache() const;
85 bool SetEnableLLDBIndexCache(bool new_value);
90 bool SetLLDBIndexCachePath(const FileSpec &path);
91 bool GetLoadSymbolOnDemand() const;
94};
95
96/// \class ModuleList ModuleList.h "lldb/Core/ModuleList.h"
97/// A collection class for Module objects.
98///
99/// Modules in the module collection class are stored as reference counted
100/// shared pointers to Module objects.
102public:
103 class Notifier {
104 public:
105 virtual ~Notifier() = default;
106
107 virtual void NotifyModuleAdded(const ModuleList &module_list,
108 const lldb::ModuleSP &module_sp) = 0;
109 virtual void NotifyModuleRemoved(const ModuleList &module_list,
110 const lldb::ModuleSP &module_sp) = 0;
111 virtual void NotifyModuleUpdated(const ModuleList &module_list,
112 const lldb::ModuleSP &old_module_sp,
113 const lldb::ModuleSP &new_module_sp) = 0;
114 virtual void NotifyWillClearList(const ModuleList &module_list) = 0;
115
116 virtual void NotifyModulesRemoved(lldb_private::ModuleList &module_list) = 0;
117 };
118
119 /// Default constructor.
120 ///
121 /// Creates an empty list of Module objects.
122 ModuleList();
123
124 /// Copy Constructor.
125 ///
126 /// Creates a new module list object with a copy of the modules from \a rhs.
127 ///
128 /// \param[in] rhs
129 /// Another module list object.
130 ModuleList(const ModuleList &rhs);
131
133
134 /// Destructor.
136
137 /// Assignment operator.
138 ///
139 /// Copies the module list from \a rhs into this list.
140 ///
141 /// \param[in] rhs
142 /// Another module list object.
143 ///
144 /// \return
145 /// A const reference to this object.
146 const ModuleList &operator=(const ModuleList &rhs);
147
148 /// Append a module to the module list.
149 ///
150 /// \param[in] module_sp
151 /// A shared pointer to a module to add to this collection.
152 ///
153 /// \param[in] notify
154 /// If true, and a notifier function is set, the notifier function
155 /// will be called. Defaults to true.
156 ///
157 /// When this ModuleList is the Target's ModuleList, the notifier
158 /// function is Target::ModulesDidLoad -- the call to
159 /// ModulesDidLoad may be deferred when adding multiple Modules
160 /// to the Target, but it must be called at the end,
161 /// before resuming execution.
162 void Append(const lldb::ModuleSP &module_sp, bool notify = true);
163
164 /// Append a module to the module list and remove any equivalent modules.
165 /// Equivalent modules are ones whose file, platform file and architecture
166 /// matches.
167 ///
168 /// Replaces the module to the collection.
169 ///
170 /// \param[in] module_sp
171 /// A shared pointer to a module to replace in this collection.
172 ///
173 /// \param[in] old_modules
174 /// Optional pointer to a vector which, if provided, will have shared
175 /// pointers to the replaced module(s) appended to it.
177 const lldb::ModuleSP &module_sp,
178 llvm::SmallVectorImpl<lldb::ModuleSP> *old_modules = nullptr);
179
180 /// Append a module to the module list, if it is not already there.
181 ///
182 /// \param[in] notify
183 /// If true, and a notifier function is set, the notifier function
184 /// will be called. Defaults to true.
185 ///
186 /// When this ModuleList is the Target's ModuleList, the notifier
187 /// function is Target::ModulesDidLoad -- the call to
188 /// ModulesDidLoad may be deferred when adding multiple Modules
189 /// to the Target, but it must be called at the end,
190 /// before resuming execution.
191 bool AppendIfNeeded(const lldb::ModuleSP &new_module, bool notify = true);
192
193 void Append(const ModuleList &module_list);
194
195 bool AppendIfNeeded(const ModuleList &module_list);
196
197 bool ReplaceModule(const lldb::ModuleSP &old_module_sp,
198 const lldb::ModuleSP &new_module_sp);
199
200 /// Clear the object's state.
201 ///
202 /// Clears the list of modules and releases a reference to each module
203 /// object and if the reference count goes to zero, the module will be
204 /// deleted.
205 void Clear();
206
207 /// Clear the object's state.
208 ///
209 /// Clears the list of modules and releases a reference to each module
210 /// object and if the reference count goes to zero, the module will be
211 /// deleted. Also release all memory that might be held by any collection
212 /// classes (like std::vector)
213 void Destroy();
214
215 /// Dump the description of each module contained in this list.
216 ///
217 /// Dump the description of each module contained in this list to the
218 /// supplied stream \a s.
219 ///
220 /// \param[in] s
221 /// The stream to which to dump the object description.
222 ///
223 /// \see Module::Dump(Stream *) const
224 void Dump(Stream *s) const;
225
226 void LogUUIDAndPaths(Log *log, const char *prefix_cstr);
227
228 std::recursive_mutex &GetMutex() const { return m_modules_mutex; }
229
230 size_t GetIndexForModule(const Module *module) const;
231
232 /// Get the module shared pointer for the module at index \a idx.
233 ///
234 /// \param[in] idx
235 /// An index into this module collection.
236 ///
237 /// \return
238 /// A shared pointer to a Module which can contain NULL if
239 /// \a idx is out of range.
240 ///
241 /// \see ModuleList::GetSize()
242 lldb::ModuleSP GetModuleAtIndex(size_t idx) const;
243
244 /// Get the module shared pointer for the module at index \a idx without
245 /// acquiring the ModuleList mutex. This MUST already have been acquired
246 /// with ModuleList::GetMutex and locked for this call to be safe.
247 ///
248 /// \param[in] idx
249 /// An index into this module collection.
250 ///
251 /// \return
252 /// A shared pointer to a Module which can contain NULL if
253 /// \a idx is out of range.
254 ///
255 /// \see ModuleList::GetSize()
257
258 /// Get the module pointer for the module at index \a idx.
259 ///
260 /// \param[in] idx
261 /// An index into this module collection.
262 ///
263 /// \return
264 /// A pointer to a Module which can by nullptr if \a idx is out
265 /// of range.
266 ///
267 /// \see ModuleList::GetSize()
268 Module *GetModulePointerAtIndex(size_t idx) const;
269
270 /// Find compile units by partial or full path.
271 ///
272 /// Finds all compile units that match \a path in all of the modules and
273 /// returns the results in \a sc_list.
274 ///
275 /// \param[in] path
276 /// The name of the compile unit we are looking for.
277 ///
278 /// \param[out] sc_list
279 /// A symbol context list that gets filled in with all of the
280 /// matches.
281 void FindCompileUnits(const FileSpec &path, SymbolContextList &sc_list) const;
282
283 /// \see Module::FindFunctions ()
284 void FindFunctions(ConstString name, lldb::FunctionNameType name_type_mask,
285 const ModuleFunctionSearchOptions &options,
286 SymbolContextList &sc_list) const;
287
288 /// \see Module::FindFunctionSymbols ()
290 lldb::FunctionNameType name_type_mask,
291 SymbolContextList &sc_list);
292
293 /// \see Module::FindFunctions ()
294 void FindFunctions(const RegularExpression &name,
295 const ModuleFunctionSearchOptions &options,
296 SymbolContextList &sc_list);
297
298 /// Find global and static variables by name.
299 ///
300 /// \param[in] name
301 /// The name of the global or static variable we are looking
302 /// for.
303 ///
304 /// \param[in] max_matches
305 /// Allow the number of matches to be limited to \a
306 /// max_matches. Specify UINT32_MAX to get all possible matches.
307 ///
308 /// \param[in] variable_list
309 /// A list of variables that gets the matches appended to.
310 void FindGlobalVariables(ConstString name, size_t max_matches,
311 VariableList &variable_list) const;
312
313 /// Find global and static variables by regular expression.
314 ///
315 /// \param[in] regex
316 /// A regular expression to use when matching the name.
317 ///
318 /// \param[in] max_matches
319 /// Allow the number of matches to be limited to \a
320 /// max_matches. Specify UINT32_MAX to get all possible matches.
321 ///
322 /// \param[in] variable_list
323 /// A list of variables that gets the matches appended to.
324 void FindGlobalVariables(const RegularExpression &regex, size_t max_matches,
325 VariableList &variable_list) const;
326
327 /// Finds modules whose file specification matches \a module_spec.
328 ///
329 /// \param[in] module_spec
330 /// A file specification object to match against the Module's
331 /// file specifications. If \a module_spec does not have
332 /// directory information, matches will occur by matching only
333 /// the basename of any modules in this list. If this value is
334 /// NULL, then file specifications won't be compared when
335 /// searching for matching modules.
336 ///
337 /// \param[out] matching_module_list
338 /// A module list that gets filled in with any modules that
339 /// match the search criteria.
340 void FindModules(const ModuleSpec &module_spec,
341 ModuleList &matching_module_list) const;
342
343 lldb::ModuleSP FindModule(const Module *module_ptr) const;
344
345 // Find a module by UUID
346 //
347 // The UUID value for a module is extracted from the ObjectFile and is the
348 // MD5 checksum, or a smarter object file equivalent, so finding modules by
349 // UUID values is very efficient and accurate.
350 lldb::ModuleSP FindModule(const UUID &uuid) const;
351
352 /// Find a module by LLDB-specific unique identifier.
353 ///
354 /// \param[in] uid The UID of the module assigned to it on construction.
355 ///
356 /// \returns ModuleSP of module with \c uid. Returns nullptr if no such
357 /// module could be found.
359
360 /// Finds the first module whose file specification matches \a module_spec.
361 lldb::ModuleSP FindFirstModule(const ModuleSpec &module_spec) const;
362
364 lldb::SymbolType symbol_type,
365 SymbolContextList &sc_list) const;
366
368 lldb::SymbolType symbol_type,
369 SymbolContextList &sc_list) const;
370
371 /// Find types using a type-matching object that contains all search
372 /// parameters.
373 ///
374 /// \param[in] search_first
375 /// If non-null, this module will be searched before any other
376 /// modules.
377 ///
378 /// \param[in] query
379 /// A type matching object that contains all of the details of the type
380 /// search.
381 ///
382 /// \param[in] results
383 /// Any matching types will be populated into the \a results object using
384 /// TypeMap::InsertUnique(...).
385 void FindTypes(Module *search_first, const TypeQuery &query,
386 lldb_private::TypeResults &results) const;
387
388 bool FindSourceFile(const FileSpec &orig_spec, FileSpec &new_spec) const;
389
390 /// Find addresses by file/line
391 ///
392 /// \param[in] target_sp
393 /// The target the addresses are desired for.
394 ///
395 /// \param[in] file
396 /// Source file to locate.
397 ///
398 /// \param[in] line
399 /// Source line to locate.
400 ///
401 /// \param[in] function
402 /// Optional filter function. Addresses within this function will be
403 /// added to the 'local' list. All others will be added to the 'extern'
404 /// list.
405 ///
406 /// \param[out] output_local
407 /// All matching addresses within 'function'
408 ///
409 /// \param[out] output_extern
410 /// All matching addresses not within 'function'
411 void FindAddressesForLine(const lldb::TargetSP target_sp,
412 const FileSpec &file, uint32_t line,
413 Function *function,
414 std::vector<Address> &output_local,
415 std::vector<Address> &output_extern);
416
417 /// Remove a module from the module list.
418 ///
419 /// \param[in] module_sp
420 /// A shared pointer to a module to remove from this collection.
421 ///
422 /// \param[in] notify
423 /// If true, and a notifier function is set, the notifier function
424 /// will be called. Defaults to true.
425 ///
426 /// When this ModuleList is the Target's ModuleList, the notifier
427 /// function is Target::ModulesDidUnload -- the call to
428 /// ModulesDidUnload may be deferred when removing multiple Modules
429 /// from the Target, but it must be called at the end,
430 /// before resuming execution.
431 bool Remove(const lldb::ModuleSP &module_sp, bool notify = true);
432
433 size_t Remove(ModuleList &module_list);
434
435 bool RemoveIfOrphaned(const lldb::ModuleWP module_ptr);
436
437 size_t RemoveOrphans(bool mandatory);
438
439 bool ResolveFileAddress(lldb::addr_t vm_addr, Address &so_addr) const;
440
441 /// \copydoc Module::ResolveSymbolContextForAddress (const Address
442 /// &,uint32_t,SymbolContext&)
443 uint32_t ResolveSymbolContextForAddress(const Address &so_addr,
444 lldb::SymbolContextItem resolve_scope,
445 SymbolContext &sc) const;
446
447 /// \copydoc Module::ResolveSymbolContextForFilePath (const char
448 /// *,uint32_t,bool,uint32_t,SymbolContextList&)
450 const char *file_path, uint32_t line, bool check_inlines,
451 lldb::SymbolContextItem resolve_scope, SymbolContextList &sc_list) const;
452
453 /// \copydoc Module::ResolveSymbolContextsForFileSpec (const FileSpec
454 /// &,uint32_t,bool,uint32_t,SymbolContextList&)
456 const FileSpec &file_spec, uint32_t line, bool check_inlines,
457 lldb::SymbolContextItem resolve_scope, SymbolContextList &sc_list) const;
458
459 /// Gets the size of the module list.
460 ///
461 /// \return
462 /// The number of modules in the module list.
463 size_t GetSize() const;
464 bool IsEmpty() const { return !GetSize(); }
465
466 bool LoadScriptingResourcesInTarget(Target *target, std::list<Status> &errors,
467 Stream &feedback_stream,
468 bool continue_on_error = true);
469
471
472 static bool ModuleIsInCache(const Module *module_ptr);
473
474 static Status
475 GetSharedModule(const ModuleSpec &module_spec, lldb::ModuleSP &module_sp,
477 bool *did_create_ptr, bool invoke_locate_callback = true);
478
479 static bool RemoveSharedModule(lldb::ModuleSP &module_sp);
480
481 static void FindSharedModules(const ModuleSpec &module_spec,
482 ModuleList &matching_module_list);
483
484 static lldb::ModuleSP FindSharedModule(const UUID &uuid);
485
486 static size_t RemoveOrphanSharedModules(bool mandatory);
487
488 static bool RemoveSharedModuleIfOrphaned(const lldb::ModuleWP module_ptr);
489
490 /// Applies 'callback' to each module in this ModuleList.
491 /// If 'callback' returns false, iteration terminates.
492 /// The 'module_sp' passed to 'callback' is guaranteed to
493 /// be non-null.
494 ///
495 /// This function is thread-safe.
496 void
497 ForEach(std::function<IterationAction(const lldb::ModuleSP &module_sp)> const
498 &callback) const;
499
500 /// Returns true if 'callback' returns true for one of the modules
501 /// in this ModuleList.
502 ///
503 /// This function is thread-safe.
504 bool AnyOf(
505 std::function<bool(lldb_private::Module &module)> const &callback) const;
506
507 /// Atomically swaps the contents of this module list with \a other.
508 void Swap(ModuleList &other);
509
510 /// For each module in this ModuleList, preload its symbols.
511 ///
512 /// \param[in] parallelize
513 /// If true, all modules will be preloaded in parallel.
514 void PreloadSymbols(bool parallelize) const;
515
516protected:
517 // Class typedefs.
518 typedef std::vector<lldb::ModuleSP>
519 collection; ///< The module collection type.
520
521 void AppendImpl(const lldb::ModuleSP &module_sp, bool use_notifier = true);
522
523 bool RemoveImpl(const lldb::ModuleSP &module_sp, bool use_notifier = true);
524
525 collection::iterator RemoveImpl(collection::iterator pos,
526 bool use_notifier = true);
527
528 void ClearImpl(bool use_notifier = true);
529
530 // Member variables.
531 collection m_modules; ///< The collection of modules.
532 mutable std::recursive_mutex m_modules_mutex;
533
535
536 /// An orphaned module that lives only in the ModuleList has a count of 1.
537 static constexpr long kUseCountModuleListOrphaned = 1;
538
539public:
544 }
545
546 typedef llvm::iterator_range<collection::const_iterator>
551};
552
553} // namespace lldb_private
554
555#endif // LLDB_CORE_MODULELIST_H
A section + offset based address class.
Definition Address.h:62
A uniqued constant string class.
Definition ConstString.h:40
A file collection class.
A file utility class.
Definition FileSpec.h:57
A class that describes a function.
Definition Function.h:400
bool SetClangModulesCachePath(const FileSpec &path)
lldb::SymbolDownload GetSymbolAutoDownload() const
bool SetLLDBIndexCachePath(const FileSpec &path)
bool SetEnableExternalLookup(bool new_value)
PathMappingList GetSymlinkMappings() const
FileSpec GetClangModulesCachePath() const
llvm::sys::RWMutex m_symlink_paths_mutex
Definition ModuleList.h:72
bool SetEnableLLDBIndexCache(bool new_value)
virtual void NotifyModuleAdded(const ModuleList &module_list, const lldb::ModuleSP &module_sp)=0
virtual void NotifyModuleUpdated(const ModuleList &module_list, const lldb::ModuleSP &old_module_sp, const lldb::ModuleSP &new_module_sp)=0
virtual void NotifyModuleRemoved(const ModuleList &module_list, const lldb::ModuleSP &module_sp)=0
virtual void NotifyWillClearList(const ModuleList &module_list)=0
virtual void NotifyModulesRemoved(lldb_private::ModuleList &module_list)=0
A collection class for Module objects.
Definition ModuleList.h:101
bool ReplaceModule(const lldb::ModuleSP &old_module_sp, const lldb::ModuleSP &new_module_sp)
std::vector< lldb::ModuleSP > collection
The module collection type.
Definition ModuleList.h:519
collection m_modules
The collection of modules.
Definition ModuleList.h:531
llvm::iterator_range< collection::const_iterator > ModuleIterableNoLocking
Definition ModuleList.h:547
void ClearImpl(bool use_notifier=true)
uint32_t ResolveSymbolContextsForFileSpec(const FileSpec &file_spec, uint32_t line, bool check_inlines, lldb::SymbolContextItem resolve_scope, SymbolContextList &sc_list) const
Resolve items in the symbol context for a given file and line. (const FileSpec&,...
static bool RemoveSharedModule(lldb::ModuleSP &module_sp)
void FindFunctions(ConstString name, lldb::FunctionNameType name_type_mask, const ModuleFunctionSearchOptions &options, SymbolContextList &sc_list) const
bool FindSourceFile(const FileSpec &orig_spec, FileSpec &new_spec) const
bool AnyOf(std::function< bool(lldb_private::Module &module)> const &callback) const
Returns true if 'callback' returns true for one of the modules in this ModuleList.
ModuleIterableNoLocking ModulesNoLocking() const
Definition ModuleList.h:548
static constexpr long kUseCountModuleListOrphaned
An orphaned module that lives only in the ModuleList has a count of 1.
Definition ModuleList.h:537
static bool ModuleIsInCache(const Module *module_ptr)
void FindGlobalVariables(ConstString name, size_t max_matches, VariableList &variable_list) const
Find global and static variables by name.
void Swap(ModuleList &other)
Atomically swaps the contents of this module list with other.
static Status GetSharedModule(const ModuleSpec &module_spec, lldb::ModuleSP &module_sp, llvm::SmallVectorImpl< lldb::ModuleSP > *old_modules, bool *did_create_ptr, bool invoke_locate_callback=true)
size_t GetIndexForModule(const Module *module) const
std::recursive_mutex & GetMutex() const
Definition ModuleList.h:228
bool RemoveImpl(const lldb::ModuleSP &module_sp, bool use_notifier=true)
lldb::ModuleSP FindFirstModule(const ModuleSpec &module_spec) const
Finds the first module whose file specification matches module_spec.
void Clear()
Clear the object's state.
ModuleList()
Default constructor.
void Dump(Stream *s) const
Dump the description of each module contained in this list.
collection::iterator RemoveImpl(collection::iterator pos, bool use_notifier=true)
void FindTypes(Module *search_first, const TypeQuery &query, lldb_private::TypeResults &results) const
Find types using a type-matching object that contains all search parameters.
uint32_t ResolveSymbolContextForFilePath(const char *file_path, uint32_t line, bool check_inlines, lldb::SymbolContextItem resolve_scope, SymbolContextList &sc_list) const
Resolve items in the symbol context for a given file and line. (const char*,uint32_t,...
lldb::ModuleSP GetModuleAtIndexUnlocked(size_t idx) const
Get the module shared pointer for the module at index idx without acquiring the ModuleList mutex.
static bool RemoveSharedModuleIfOrphaned(const lldb::ModuleWP module_ptr)
void FindCompileUnits(const FileSpec &path, SymbolContextList &sc_list) const
Find compile units by partial or full path.
void PreloadSymbols(bool parallelize) const
For each module in this ModuleList, preload its symbols.
const ModuleList & operator=(const ModuleList &rhs)
Assignment operator.
std::recursive_mutex m_modules_mutex
Definition ModuleList.h:532
bool AppendIfNeeded(const lldb::ModuleSP &new_module, bool notify=true)
Append a module to the module list, if it is not already there.
Module * GetModulePointerAtIndex(size_t idx) const
Get the module pointer for the module at index idx.
void FindSymbolsWithNameAndType(ConstString name, lldb::SymbolType symbol_type, SymbolContextList &sc_list) const
static lldb::ModuleSP FindSharedModule(const UUID &uuid)
lldb::ModuleSP FindModule(const Module *module_ptr) const
static ModuleListProperties & GetGlobalModuleListProperties()
void FindModules(const ModuleSpec &module_spec, ModuleList &matching_module_list) const
Finds modules whose file specification matches module_spec.
void FindAddressesForLine(const lldb::TargetSP target_sp, const FileSpec &file, uint32_t line, Function *function, std::vector< Address > &output_local, std::vector< Address > &output_extern)
Find addresses by file/line.
uint32_t ResolveSymbolContextForAddress(const Address &so_addr, lldb::SymbolContextItem resolve_scope, SymbolContext &sc) const
Resolve the symbol context for the given address. (const Address&,uint32_t,SymbolContext&)
bool Remove(const lldb::ModuleSP &module_sp, bool notify=true)
Remove a module from the module list.
size_t RemoveOrphans(bool mandatory)
lldb::ModuleSP GetModuleAtIndex(size_t idx) const
Get the module shared pointer for the module at index idx.
void Append(const lldb::ModuleSP &module_sp, bool notify=true)
Append a module to the module list.
static size_t RemoveOrphanSharedModules(bool mandatory)
void Destroy()
Clear the object's state.
LockingAdaptedIterable< std::recursive_mutex, collection > ModuleIterable
Definition ModuleList.h:541
void AppendImpl(const lldb::ModuleSP &module_sp, bool use_notifier=true)
bool LoadScriptingResourcesInTarget(Target *target, std::list< Status > &errors, Stream &feedback_stream, bool continue_on_error=true)
void ReplaceEquivalent(const lldb::ModuleSP &module_sp, llvm::SmallVectorImpl< lldb::ModuleSP > *old_modules=nullptr)
Append a module to the module list and remove any equivalent modules.
void FindFunctionSymbols(ConstString name, lldb::FunctionNameType name_type_mask, SymbolContextList &sc_list)
static void FindSharedModules(const ModuleSpec &module_spec, ModuleList &matching_module_list)
void FindSymbolsMatchingRegExAndType(const RegularExpression &regex, lldb::SymbolType symbol_type, SymbolContextList &sc_list) const
ModuleIterable Modules() const
Definition ModuleList.h:542
bool ResolveFileAddress(lldb::addr_t vm_addr, Address &so_addr) const
size_t GetSize() const
Gets the size of the module list.
bool RemoveIfOrphaned(const lldb::ModuleWP module_ptr)
void LogUUIDAndPaths(Log *log, const char *prefix_cstr)
void ForEach(std::function< IterationAction(const lldb::ModuleSP &module_sp)> const &callback) const
Applies 'callback' to each module in this ModuleList.
A class that describes an executable image and its associated object and symbol files.
Definition Module.h:90
An error handling class.
Definition Status.h:118
A stream class that can stream formatted output to a file.
Definition Stream.h:28
Defines a list of symbol context objects.
Defines a symbol context baton that can be handed other debug core functions.
Provides public interface for all SymbolFiles.
Definition SymbolFile.h:51
A class that contains all state required for type lookups.
Definition Type.h:104
This class tracks the state and results of a TypeQuery.
Definition Type.h:344
Represents UUID's of various sizes.
Definition UUID.h:27
A class that represents a running process on the host machine.
IterationAction
Useful for callbacks whose return type indicates whether to continue iteration or short-circuit.
static constexpr OptionEnumValueElement g_auto_download_enum_values[]
Definition ModuleList.h:51
std::weak_ptr< lldb_private::Module > ModuleWP
SymbolType
Symbol types.
uint64_t user_id_t
Definition lldb-types.h:82
uint64_t addr_t
Definition lldb-types.h:80
std::shared_ptr< lldb_private::Target > TargetSP
@ eSymbolDownloadBackground
@ eSymbolDownloadForeground
std::shared_ptr< lldb_private::Module > ModuleSP
Options used by Module::FindFunctions.
Definition Module.h:66