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
93
95
97};
98
99/// \class ModuleList ModuleList.h "lldb/Core/ModuleList.h"
100/// A collection class for Module objects.
101///
102/// Modules in the module collection class are stored as reference counted
103/// shared pointers to Module objects.
105public:
106 class Notifier {
107 public:
108 virtual ~Notifier() = default;
109
110 virtual void NotifyModuleAdded(const ModuleList &module_list,
111 const lldb::ModuleSP &module_sp) = 0;
112 virtual void NotifyModuleRemoved(const ModuleList &module_list,
113 const lldb::ModuleSP &module_sp) = 0;
114 virtual void NotifyModuleUpdated(const ModuleList &module_list,
115 const lldb::ModuleSP &old_module_sp,
116 const lldb::ModuleSP &new_module_sp) = 0;
117 virtual void NotifyWillClearList(const ModuleList &module_list) = 0;
118
119 virtual void NotifyModulesRemoved(lldb_private::ModuleList &module_list) = 0;
120 };
121
122 /// Default constructor.
123 ///
124 /// Creates an empty list of Module objects.
125 ModuleList();
126
127 /// Copy Constructor.
128 ///
129 /// Creates a new module list object with a copy of the modules from \a rhs.
130 ///
131 /// \param[in] rhs
132 /// Another module list object.
133 ModuleList(const ModuleList &rhs);
134
136
137 /// Destructor.
139
140 /// Assignment operator.
141 ///
142 /// Copies the module list from \a rhs into this list.
143 ///
144 /// \param[in] rhs
145 /// Another module list object.
146 ///
147 /// \return
148 /// A const reference to this object.
149 const ModuleList &operator=(const ModuleList &rhs);
150
151 /// Append a module to the module list.
152 ///
153 /// \param[in] module_sp
154 /// A shared pointer to a module to add to this collection.
155 ///
156 /// \param[in] notify
157 /// If true, and a notifier function is set, the notifier function
158 /// will be called. Defaults to true.
159 ///
160 /// When this ModuleList is the Target's ModuleList, the notifier
161 /// function is Target::ModulesDidLoad -- the call to
162 /// ModulesDidLoad may be deferred when adding multiple Modules
163 /// to the Target, but it must be called at the end,
164 /// before resuming execution.
165 void Append(const lldb::ModuleSP &module_sp, bool notify = true);
166
167 /// Append a module to the module list and remove any equivalent modules.
168 /// Equivalent modules are ones whose file, platform file and architecture
169 /// matches.
170 ///
171 /// Replaces the module to the collection.
172 ///
173 /// \param[in] module_sp
174 /// A shared pointer to a module to replace in this collection.
175 ///
176 /// \param[in] old_modules
177 /// Optional pointer to a vector which, if provided, will have shared
178 /// pointers to the replaced module(s) appended to it.
180 const lldb::ModuleSP &module_sp,
181 llvm::SmallVectorImpl<lldb::ModuleSP> *old_modules = nullptr);
182
183 /// Append a module to the module list, if it is not already there.
184 ///
185 /// \param[in] notify
186 /// If true, and a notifier function is set, the notifier function
187 /// will be called. Defaults to true.
188 ///
189 /// When this ModuleList is the Target's ModuleList, the notifier
190 /// function is Target::ModulesDidLoad -- the call to
191 /// ModulesDidLoad may be deferred when adding multiple Modules
192 /// to the Target, but it must be called at the end,
193 /// before resuming execution.
194 bool AppendIfNeeded(const lldb::ModuleSP &new_module, bool notify = true);
195
196 void Append(const ModuleList &module_list);
197
198 bool AppendIfNeeded(const ModuleList &module_list);
199
200 bool ReplaceModule(const lldb::ModuleSP &old_module_sp,
201 const lldb::ModuleSP &new_module_sp);
202
203 /// Clear the object's state.
204 ///
205 /// Clears the list of modules and releases a reference to each module
206 /// object and if the reference count goes to zero, the module will be
207 /// deleted.
208 void Clear();
209
210 /// Clear the object's state.
211 ///
212 /// Clears the list of modules and releases a reference to each module
213 /// object and if the reference count goes to zero, the module will be
214 /// deleted. Also release all memory that might be held by any collection
215 /// classes (like std::vector)
216 void Destroy();
217
218 /// Dump the description of each module contained in this list.
219 ///
220 /// Dump the description of each module contained in this list to the
221 /// supplied stream \a s.
222 ///
223 /// \param[in] s
224 /// The stream to which to dump the object description.
225 ///
226 /// \see Module::Dump(Stream *) const
227 void Dump(Stream *s) const;
228
229 void LogUUIDAndPaths(Log *log, const char *prefix_cstr);
230
231 std::recursive_mutex &GetMutex() const { return m_modules_mutex; }
232
233 size_t GetIndexForModule(const Module *module) const;
234
235 /// Get the module shared pointer for the module at index \a idx.
236 ///
237 /// \param[in] idx
238 /// An index into this module collection.
239 ///
240 /// \return
241 /// A shared pointer to a Module which can contain NULL if
242 /// \a idx is out of range.
243 ///
244 /// \see ModuleList::GetSize()
245 lldb::ModuleSP GetModuleAtIndex(size_t idx) const;
246
247 /// Get the module shared pointer for the module at index \a idx without
248 /// acquiring the ModuleList mutex. This MUST already have been acquired
249 /// with ModuleList::GetMutex and locked for this call to be safe.
250 ///
251 /// \param[in] idx
252 /// An index into this module collection.
253 ///
254 /// \return
255 /// A shared pointer to a Module which can contain NULL if
256 /// \a idx is out of range.
257 ///
258 /// \see ModuleList::GetSize()
260
261 /// Get the module pointer for the module at index \a idx.
262 ///
263 /// \param[in] idx
264 /// An index into this module collection.
265 ///
266 /// \return
267 /// A pointer to a Module which can by nullptr if \a idx is out
268 /// of range.
269 ///
270 /// \see ModuleList::GetSize()
271 Module *GetModulePointerAtIndex(size_t idx) const;
272
273 /// Find compile units by partial or full path.
274 ///
275 /// Finds all compile units that match \a path in all of the modules and
276 /// returns the results in \a sc_list.
277 ///
278 /// \param[in] path
279 /// The name of the compile unit we are looking for.
280 ///
281 /// \param[out] sc_list
282 /// A symbol context list that gets filled in with all of the
283 /// matches.
284 void FindCompileUnits(const FileSpec &path, SymbolContextList &sc_list) const;
285
286 /// \see Module::FindFunctions ()
287 void FindFunctions(ConstString name, lldb::FunctionNameType name_type_mask,
288 const ModuleFunctionSearchOptions &options,
289 SymbolContextList &sc_list) const;
290
291 /// \see Module::FindFunctionSymbols ()
293 lldb::FunctionNameType name_type_mask,
294 SymbolContextList &sc_list);
295
296 /// \see Module::FindFunctions ()
297 void FindFunctions(const RegularExpression &name,
298 const ModuleFunctionSearchOptions &options,
299 SymbolContextList &sc_list);
300
301 /// Find global and static variables by name.
302 ///
303 /// \param[in] name
304 /// The name of the global or static variable we are looking
305 /// for.
306 ///
307 /// \param[in] max_matches
308 /// Allow the number of matches to be limited to \a
309 /// max_matches. Specify UINT32_MAX to get all possible matches.
310 ///
311 /// \param[in] variable_list
312 /// A list of variables that gets the matches appended to.
313 void FindGlobalVariables(ConstString name, size_t max_matches,
314 VariableList &variable_list) const;
315
316 /// Find global and static variables by regular expression.
317 ///
318 /// \param[in] regex
319 /// A regular expression to use when matching the name.
320 ///
321 /// \param[in] max_matches
322 /// Allow the number of matches to be limited to \a
323 /// max_matches. Specify UINT32_MAX to get all possible matches.
324 ///
325 /// \param[in] variable_list
326 /// A list of variables that gets the matches appended to.
327 void FindGlobalVariables(const RegularExpression &regex, size_t max_matches,
328 VariableList &variable_list) const;
329
330 /// Finds modules whose file specification matches \a module_spec.
331 ///
332 /// \param[in] module_spec
333 /// A file specification object to match against the Module's
334 /// file specifications. If \a module_spec does not have
335 /// directory information, matches will occur by matching only
336 /// the basename of any modules in this list. If this value is
337 /// NULL, then file specifications won't be compared when
338 /// searching for matching modules.
339 ///
340 /// \param[out] matching_module_list
341 /// A module list that gets filled in with any modules that
342 /// match the search criteria.
343 void FindModules(const ModuleSpec &module_spec,
344 ModuleList &matching_module_list) const;
345
346 lldb::ModuleSP FindModule(const Module *module_ptr) const;
347
348 // Find a module by UUID
349 //
350 // The UUID value for a module is extracted from the ObjectFile and is the
351 // MD5 checksum, or a smarter object file equivalent, so finding modules by
352 // UUID values is very efficient and accurate.
353 lldb::ModuleSP FindModule(const UUID &uuid) const;
354
355 /// Find a module by LLDB-specific unique identifier.
356 ///
357 /// \param[in] uid The UID of the module assigned to it on construction.
358 ///
359 /// \returns ModuleSP of module with \c uid. Returns nullptr if no such
360 /// module could be found.
362
363 /// Finds the first module whose file specification matches \a module_spec.
364 lldb::ModuleSP FindFirstModule(const ModuleSpec &module_spec) const;
365
367 lldb::SymbolType symbol_type,
368 SymbolContextList &sc_list) const;
369
371 lldb::SymbolType symbol_type,
372 SymbolContextList &sc_list) const;
373
374 /// Find types using a type-matching object that contains all search
375 /// parameters.
376 ///
377 /// \param[in] search_first
378 /// If non-null, this module will be searched before any other
379 /// modules.
380 ///
381 /// \param[in] query
382 /// A type matching object that contains all of the details of the type
383 /// search.
384 ///
385 /// \param[in] results
386 /// Any matching types will be populated into the \a results object using
387 /// TypeMap::InsertUnique(...).
388 void FindTypes(Module *search_first, const TypeQuery &query,
389 lldb_private::TypeResults &results) const;
390
391 bool FindSourceFile(const FileSpec &orig_spec, FileSpec &new_spec) const;
392
393 /// Find addresses by file/line
394 ///
395 /// \param[in] target_sp
396 /// The target the addresses are desired for.
397 ///
398 /// \param[in] file
399 /// Source file to locate.
400 ///
401 /// \param[in] line
402 /// Source line to locate.
403 ///
404 /// \param[in] function
405 /// Optional filter function. Addresses within this function will be
406 /// added to the 'local' list. All others will be added to the 'extern'
407 /// list.
408 ///
409 /// \param[out] output_local
410 /// All matching addresses within 'function'
411 ///
412 /// \param[out] output_extern
413 /// All matching addresses not within 'function'
414 void FindAddressesForLine(const lldb::TargetSP target_sp,
415 const FileSpec &file, uint32_t line,
416 Function *function,
417 std::vector<Address> &output_local,
418 std::vector<Address> &output_extern);
419
420 /// Remove a module from the module list.
421 ///
422 /// \param[in] module_sp
423 /// A shared pointer to a module to remove from this collection.
424 ///
425 /// \param[in] notify
426 /// If true, and a notifier function is set, the notifier function
427 /// will be called. Defaults to true.
428 ///
429 /// When this ModuleList is the Target's ModuleList, the notifier
430 /// function is Target::ModulesDidUnload -- the call to
431 /// ModulesDidUnload may be deferred when removing multiple Modules
432 /// from the Target, but it must be called at the end,
433 /// before resuming execution.
434 bool Remove(const lldb::ModuleSP &module_sp, bool notify = true);
435
436 size_t Remove(ModuleList &module_list);
437
438 bool RemoveIfOrphaned(const Module *module_ptr);
439
440 size_t RemoveOrphans(bool mandatory);
441
442 bool ResolveFileAddress(lldb::addr_t vm_addr, Address &so_addr) const;
443
444 /// \copydoc Module::ResolveSymbolContextForAddress (const Address
445 /// &,uint32_t,SymbolContext&)
446 uint32_t ResolveSymbolContextForAddress(const Address &so_addr,
447 lldb::SymbolContextItem resolve_scope,
448 SymbolContext &sc) const;
449
450 /// \copydoc Module::ResolveSymbolContextForFilePath (const char
451 /// *,uint32_t,bool,uint32_t,SymbolContextList&)
453 const char *file_path, uint32_t line, bool check_inlines,
454 lldb::SymbolContextItem resolve_scope, SymbolContextList &sc_list) const;
455
456 /// \copydoc Module::ResolveSymbolContextsForFileSpec (const FileSpec
457 /// &,uint32_t,bool,uint32_t,SymbolContextList&)
459 const FileSpec &file_spec, uint32_t line, bool check_inlines,
460 lldb::SymbolContextItem resolve_scope, SymbolContextList &sc_list) const;
461
462 /// Gets the size of the module list.
463 ///
464 /// \return
465 /// The number of modules in the module list.
466 size_t GetSize() const;
467 bool IsEmpty() const { return !GetSize(); }
468
469 bool LoadScriptingResourcesInTarget(Target *target, std::list<Status> &errors,
470 Stream &feedback_stream,
471 bool continue_on_error = true);
472
474
475 static bool ModuleIsInCache(const Module *module_ptr);
476
477 static Status
478 GetSharedModule(const ModuleSpec &module_spec, lldb::ModuleSP &module_sp,
479 const FileSpecList *module_search_paths_ptr,
481 bool *did_create_ptr, bool always_create = false);
482
483 static bool RemoveSharedModule(lldb::ModuleSP &module_sp);
484
485 static void FindSharedModules(const ModuleSpec &module_spec,
486 ModuleList &matching_module_list);
487
488 static lldb::ModuleSP FindSharedModule(const UUID &uuid);
489
490 static size_t RemoveOrphanSharedModules(bool mandatory);
491
492 static bool RemoveSharedModuleIfOrphaned(const Module *module_ptr);
493
494 /// Applies 'callback' to each module in this ModuleList.
495 /// If 'callback' returns false, iteration terminates.
496 /// The 'module_sp' passed to 'callback' is guaranteed to
497 /// be non-null.
498 ///
499 /// This function is thread-safe.
500 void
501 ForEach(std::function<IterationAction(const lldb::ModuleSP &module_sp)> const
502 &callback) const;
503
504 /// Returns true if 'callback' returns true for one of the modules
505 /// in this ModuleList.
506 ///
507 /// This function is thread-safe.
508 bool AnyOf(
509 std::function<bool(lldb_private::Module &module)> const &callback) const;
510
511 /// Atomically swaps the contents of this module list with \a other.
512 void Swap(ModuleList &other);
513
514protected:
515 // Class typedefs.
516 typedef std::vector<lldb::ModuleSP>
517 collection; ///< The module collection type.
518
519 void AppendImpl(const lldb::ModuleSP &module_sp, bool use_notifier = true);
520
521 bool RemoveImpl(const lldb::ModuleSP &module_sp, bool use_notifier = true);
522
523 collection::iterator RemoveImpl(collection::iterator pos,
524 bool use_notifier = true);
525
526 void ClearImpl(bool use_notifier = true);
527
528 // Member variables.
529 collection m_modules; ///< The collection of modules.
530 mutable std::recursive_mutex m_modules_mutex;
531
533
534public:
539 }
540
541 typedef llvm::iterator_range<collection::const_iterator>
546};
547
548} // namespace lldb_private
549
550#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:104
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:517
collection m_modules
The collection of modules.
Definition ModuleList.h:529
llvm::iterator_range< collection::const_iterator > ModuleIterableNoLocking
Definition ModuleList.h:542
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:543
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.
size_t GetIndexForModule(const Module *module) const
std::recursive_mutex & GetMutex() const
Definition ModuleList.h:231
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,...
static bool RemoveSharedModuleIfOrphaned(const Module *module_ptr)
lldb::ModuleSP GetModuleAtIndexUnlocked(size_t idx) const
Get the module shared pointer for the module at index idx without acquiring the ModuleList mutex.
void FindCompileUnits(const FileSpec &path, SymbolContextList &sc_list) const
Find compile units by partial or full path.
const ModuleList & operator=(const ModuleList &rhs)
Assignment operator.
std::recursive_mutex m_modules_mutex
Definition ModuleList.h:530
bool AppendIfNeeded(const lldb::ModuleSP &new_module, bool notify=true)
Append a module to the module list, if it is not already there.
static Status GetSharedModule(const ModuleSpec &module_spec, lldb::ModuleSP &module_sp, const FileSpecList *module_search_paths_ptr, llvm::SmallVectorImpl< lldb::ModuleSP > *old_modules, bool *did_create_ptr, bool always_create=false)
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.
bool RemoveIfOrphaned(const Module *module_ptr)
LockingAdaptedIterable< std::recursive_mutex, collection > ModuleIterable
Definition ModuleList.h:536
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:537
bool ResolveFileAddress(lldb::addr_t vm_addr, Address &so_addr) const
size_t GetSize() const
Gets the size of the module list.
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
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