LLDB mainline
ObjectFileMachO.h
Go to the documentation of this file.
1//===-- ObjectFileMachO.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_SOURCE_PLUGINS_OBJECTFILE_MACH_O_OBJECTFILEMACHO_H
10#define LLDB_SOURCE_PLUGINS_OBJECTFILE_MACH_O_OBJECTFILEMACHO_H
11
12#include "lldb/Core/Address.h"
13#include "lldb/Host/SafeMachO.h"
20#include "lldb/Utility/UUID.h"
21#include <optional>
22
23// This class needs to be hidden as eventually belongs in a plugin that
24// will export the ObjectFile protocol
26public:
27 ObjectFileMachO(const lldb::ModuleSP &module_sp,
28 lldb::DataExtractorSP extractor_sp,
29 lldb::offset_t data_offset,
30 const lldb_private::FileSpec *file, lldb::offset_t offset,
31 lldb::offset_t length);
32
33 ObjectFileMachO(const lldb::ModuleSP &module_sp,
35 const lldb::ProcessSP &process_sp, lldb::addr_t header_addr);
36
37 ~ObjectFileMachO() override = default;
38
39 // Static Functions
40 static void Initialize();
41
42 static void Terminate();
43
44 static llvm::StringRef GetPluginNameStatic() { return "mach-o"; }
45
46 static llvm::StringRef GetPluginDescriptionStatic() {
47 return "Mach-o object file reader (32 and 64 bit)";
48 }
49
51 CreateInstance(const lldb::ModuleSP &module_sp,
52 lldb::DataExtractorSP extractor_sp, lldb::offset_t data_offset,
53 const lldb_private::FileSpec *file, lldb::offset_t file_offset,
54 lldb::offset_t length);
55
57 const lldb::ModuleSP &module_sp, lldb::WritableDataBufferSP data_sp,
58 const lldb::ProcessSP &process_sp, lldb::addr_t header_addr);
59
62 lldb::DataExtractorSP &extractor_sp,
63 lldb::offset_t file_offset, lldb::offset_t length);
64
65 static bool SaveCore(const lldb::ProcessSP &process_sp,
68
69 static bool MagicBytesMatch(lldb::DataExtractorSP extractor_sp,
70 lldb::addr_t offset, lldb::addr_t length);
71
72 // LLVM RTTI support
73 static char ID;
74 bool isA(const void *ClassID) const override {
75 return ClassID == &ID || ObjectFile::isA(ClassID);
76 }
77 static bool classof(const ObjectFile *obj) { return obj->isA(&ID); }
78
79 // Member Functions
80 bool ParseHeader() override;
81
83 bool value_is_offset) override;
84
85 lldb::ByteOrder GetByteOrder() const override;
86
87 bool IsExecutable() const override;
88
89 bool IsDynamicLoader() const;
90
91 bool IsSharedCacheBinary() const;
92
93 bool IsKext() const;
94
95 uint32_t GetAddressByteSize() const override;
96
98
99 void ParseSymtab(lldb_private::Symtab &symtab) override;
100
101 bool IsStripped() override;
102
103 void CreateSections(lldb_private::SectionList &unified_section_list) override;
104
105 void Dump(lldb_private::Stream *s) override;
106
108
109 lldb_private::UUID GetUUID() override;
110
111 uint32_t GetDependentModules(lldb_private::FileSpecList &files) override;
112
116
118
120
121 uint32_t GetNumThreadContexts() override;
122
123 std::vector<std::tuple<lldb::offset_t, lldb::offset_t>>
124 FindLC_NOTEByName(std::string name);
125
126 std::string GetIdentifierString() override;
127
129
130 bool GetCorefileMainBinaryInfo(lldb::addr_t &value, bool &value_is_offset,
131 lldb_private::UUID &uuid,
132 ObjectFile::BinaryType &type) override;
133
134 bool GetCorefileThreadExtraInfos(std::vector<lldb::tid_t> &tids) override;
135
137
138 bool LoadCoreFileImages(lldb_private::Process &process) override;
139
141 GetThreadContextAtIndex(uint32_t idx, lldb_private::Thread &thread) override;
142
143 ObjectFile::Type CalculateType() override;
144
145 ObjectFile::Strata CalculateStrata() override;
146
147 llvm::VersionTuple GetVersion() override;
148
149 llvm::VersionTuple GetMinimumOSVersion() override;
150
151 llvm::VersionTuple GetSDKVersion() override;
152
153 bool GetIsDynamicLinkEditor() override;
154
155 bool CanTrustAddressRanges() override;
156
157 static bool ParseHeader(lldb::DataExtractorSP &data,
158 lldb::offset_t *data_offset_ptr,
159 llvm::MachO::mach_header &header);
160
161 bool AllowAssemblyEmulationUnwindPlans() override;
162
164
165 bool IsGOTSection(const lldb_private::Section &section) const override;
166
167 // PluginInterface protocol
168 llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
169
170protected:
171 static lldb_private::UUID
172 GetUUID(const llvm::MachO::mach_header &header,
173 const lldb_private::DataExtractor &data,
174 lldb::offset_t lc_offset); // Offset to the first load command
175
177 lldb::ModuleSP module_sp, const llvm::MachO::mach_header &header,
178 const lldb_private::DataExtractor &data, lldb::offset_t lc_offset);
179
180 /// Enumerate all ArchSpecs supported by this Mach-O file.
181 ///
182 /// On macOS one Mach-O slice can contain multiple load commands:
183 /// One load command for being loaded into a macOS process and one
184 /// load command for being loaded into a macCatalyst process. In
185 /// contrast to ObjectContainerUniversalMachO, this is the same
186 /// binary that can be loaded into different contexts.
187 static void GetAllArchSpecs(const llvm::MachO::mach_header &header,
188 const lldb_private::DataExtractor &data,
189 lldb::offset_t lc_offset,
190 lldb_private::ModuleSpec &base_spec,
192
193 /// Intended for same-host arm device debugging where lldb needs to
194 /// detect libraries in the shared cache and augment the nlist entries
195 /// with an on-disk dyld_shared_cache file. The process will record
196 /// the shared cache UUID so the on-disk cache can be matched or rejected
197 /// correctly.
199 lldb::addr_t &base_addr,
200 lldb_private::UUID &uuid);
201
202 /// Intended for same-host arm device debugging where lldb will read
203 /// shared cache libraries out of its own memory instead of the remote
204 /// process' memory as an optimization. If lldb's shared cache UUID
205 /// does not match the process' shared cache UUID, this optimization
206 /// should not be used.
208
210 lldb::addr_t mach_header_load_address,
211 const lldb_private::Section *mach_header_section,
212 const lldb_private::Section *section);
213
216 const lldb::ByteOrder byte_order,
217 const uint32_t addr_byte_size);
218
219 size_t ParseSymtab();
220
223
225 void ProcessDysymtabCommand(const llvm::MachO::load_command &load_cmd,
226 lldb::offset_t offset);
227 void ProcessSegmentCommand(const llvm::MachO::load_command &load_cmd,
228 lldb::offset_t offset, uint32_t cmd_idx,
229 SegmentParsingContext &context);
230 void SanitizeSegmentCommand(llvm::MachO::segment_command_64 &seg_cmd,
231 uint32_t cmd_idx);
232
233 bool SectionIsLoadable(const lldb_private::Section *section);
234
235 /// A corefile may include metadata about all of the binaries that were
236 /// present in the process when the corefile was taken. This is only
237 /// implemented for Mach-O files for now; we'll generalize it when we
238 /// have other systems that can include the same.
240 std::string filename;
245 std::vector<std::tuple<lldb_private::ConstString, lldb::addr_t>>
247 };
248
249 struct LCNoteEntry {
250 explicit LCNoteEntry(lldb::ByteOrder byte_order)
251 : payload(lldb_private::Stream::eBinary, byte_order) {}
252
253 std::string name;
256 };
257
259 std::vector<MachOCorefileImageEntry> all_image_infos;
260 bool IsValid() { return all_image_infos.size() > 0; }
261 };
262
263 // The LC_SYMTAB's symtab_command structure uses 32-bit file offsets
264 // for two fields, but ObjectFileMachO needs to calculate the offsets
265 // in virtual address layout from the start of the TEXT segment, and
266 // that span may be larger than 4GB.
269 SymtabCommandLargeOffsets(const llvm::MachO::symtab_command &in)
270 : cmd(in.cmd), cmdsize(in.cmdsize), symoff(in.symoff), nsyms(in.nsyms),
271 stroff(in.stroff), strsize(in.strsize) {}
272 void operator=(const llvm::MachO::symtab_command &in) {
273 cmd = in.cmd;
274 cmdsize = in.cmdsize;
275 symoff = in.symoff;
276 nsyms = in.nsyms;
277 stroff = in.stroff;
278 strsize = in.strsize;
279 }
280 uint32_t cmd = 0; /* LC_SYMTAB */
281 uint32_t cmdsize = 0; /* sizeof(struct symtab_command) */
282 lldb::offset_t symoff = 0; /* symbol table offset */
283 uint32_t nsyms = 0; /* number of symbol table entries */
284 lldb::offset_t stroff = 0; /* string table offset */
285 uint32_t strsize = 0; /* string table size in bytes */
286 };
287
288 // The LC_DYLD_INFO's dyld_info_command has 32-bit file offsets
289 // that we will use as virtual address offsets, and may need to span
290 // more than 4GB in virtual memory.
300
301 void operator=(const llvm::MachO::dyld_info_command &in) {
302 cmd = in.cmd;
303 cmdsize = in.cmdsize;
304 rebase_off = in.rebase_off;
305 rebase_size = in.rebase_size;
306 bind_off = in.bind_off;
307 bind_size = in.bind_size;
308 weak_bind_off = in.weak_bind_off;
309 weak_bind_size = in.weak_bind_size;
310 lazy_bind_off = in.lazy_bind_off;
311 lazy_bind_size = in.lazy_bind_size;
312 export_off = in.export_off;
313 export_size = in.export_size;
314 };
315
316 /// LC_DYLD_INFO or LC_DYLD_INFO_ONLY
317 uint32_t cmd = 0;
318 uint32_t cmdsize = 0; /* sizeof(struct dyld_info_command) */
319 lldb::offset_t rebase_off = 0; /* file offset to rebase info */
320 uint32_t rebase_size = 0; /* size of rebase info */
321 lldb::offset_t bind_off = 0; /* file offset to binding info */
322 uint32_t bind_size = 0; /* size of binding info */
323 lldb::offset_t weak_bind_off = 0; /* file offset to weak binding info */
324 uint32_t weak_bind_size = 0; /* size of weak binding info */
325 lldb::offset_t lazy_bind_off = 0; /* file offset to lazy binding info */
326 uint32_t lazy_bind_size = 0; /* size of lazy binding infs */
327 lldb::offset_t export_off = 0; /* file offset to lazy binding info */
328 uint32_t export_size = 0; /* size of lazy binding infs */
329 };
330
331 /// The LC_DYSYMTAB's dysymtab_command has 32-bit file offsets
332 /// that we will use as virtual address offsets, and may need to span
333 /// more than 4GB in virtual memory.
346
347 void operator=(const llvm::MachO::dysymtab_command &in) {
348 cmd = in.cmd;
349 cmdsize = in.cmdsize;
350 ilocalsym = in.ilocalsym;
351 nlocalsym = in.nlocalsym;
352 iextdefsym = in.iextdefsym;
353 nextdefsym = in.nextdefsym;
354 iundefsym = in.iundefsym;
355 nundefsym = in.nundefsym;
356 tocoff = in.tocoff;
357 ntoc = in.ntoc;
358 modtaboff = in.modtaboff;
359 nmodtab = in.nmodtab;
360 extrefsymoff = in.extrefsymoff;
361 nextrefsyms = in.nextrefsyms;
362 indirectsymoff = in.indirectsymoff;
363 nindirectsyms = in.nindirectsyms;
364 extreloff = in.extreloff;
365 nextrel = in.nextrel;
366 locreloff = in.locreloff;
367 nlocrel = in.nlocrel;
368 };
369
370 uint32_t cmd = 0; /* LC_DYSYMTAB */
371 uint32_t cmdsize = 0; /* sizeof(struct dysymtab_command) */
372 uint32_t ilocalsym = 0; /* index to local symbols */
373 uint32_t nlocalsym = 0; /* number of local symbols */
374 uint32_t iextdefsym = 0; /* index to externally defined symbols */
375 uint32_t nextdefsym = 0; /* number of externally defined symbols */
376 uint32_t iundefsym = 0; /* index to undefined symbols */
377 uint32_t nundefsym = 0; /* number of undefined symbols */
378 lldb::offset_t tocoff = 0; /* file offset to table of contents */
379 uint32_t ntoc = 0; /* number of entries in table of contents */
380 lldb::offset_t modtaboff = 0; /* file offset to module table */
381 uint32_t nmodtab = 0; /* number of module table entries */
382 lldb::offset_t extrefsymoff = 0; /* offset to referenced symbol table */
383 uint32_t nextrefsyms = 0; /* number of referenced symbol table entries */
385 0; /* file offset to the indirect symbol table */
386 uint32_t nindirectsyms = 0; /* number of indirect symbol table entries */
387 lldb::offset_t extreloff = 0; /* offset to external relocation entries */
388 uint32_t nextrel = 0; /* number of external relocation entries */
389 lldb::offset_t locreloff = 0; /* offset to local relocation entries */
390 uint32_t nlocrel = 0; /* number of local relocation entries */
391 };
392
393 // The linkedit_data_command is used in several load commands including
394 // LC_FUNCTION_STARTS and LC_DYLD_EXPORTS_TRIE. It has a 32-bit file offset
395 // that may need to span more than 4GB in real virtual addresses.
399 const llvm::MachO::linkedit_data_command &in)
400 : cmd(in.cmd), cmdsize(in.cmdsize), dataoff(in.dataoff),
401 datasize(in.datasize) {}
402 void operator=(const llvm::MachO::linkedit_data_command &in) {
403 cmd = in.cmd;
404 cmdsize = in.cmdsize;
405 dataoff = in.dataoff;
406 datasize = in.datasize;
407 }
408 uint32_t cmd = 0; /* LC_FUNCTION_STARTS, LC_DYLD_EXPORTS_TRIE, etc */
409 uint32_t cmdsize = 0; /* sizeof(struct linkedit_data_command) */
410 lldb::offset_t dataoff = 0; /* file offset of data in __LINKEDIT segment */
411 uint32_t datasize = 0; /* file size of data in __LINKEDIT segment */
412 };
413
414 /// Get the list of binary images that were present in the process
415 /// when the corefile was produced.
416 /// \return
417 /// The MachOCorefileAllImageInfos object returned will have
418 /// IsValid() == false if the information is unavailable.
420
421 llvm::MachO::mach_header m_header;
422 static llvm::StringRef GetSegmentNameTEXT();
423 static llvm::StringRef GetSegmentNameDATA();
424 static llvm::StringRef GetSegmentNameDATA_DIRTY();
425 static llvm::StringRef GetSegmentNameDATA_CONST();
426 static llvm::StringRef GetSegmentNameOBJC();
427 static llvm::StringRef GetSegmentNameLINKEDIT();
428 static llvm::StringRef GetSegmentNameDWARF();
429 static llvm::StringRef GetSegmentNameLLVM_COV();
430 static llvm::StringRef GetSectionNameEHFrame();
431 static llvm::StringRef GetSectionNameLLDBNoNlist();
432
433 llvm::MachO::dysymtab_command m_dysymtab;
434 std::vector<llvm::MachO::section_64> m_mach_sections;
435 std::optional<llvm::VersionTuple> m_min_os_version;
436 std::optional<llvm::VersionTuple> m_sdk_versions;
445};
446
447#endif // LLDB_SOURCE_PLUGINS_OBJECTFILE_MACH_O_OBJECTFILEMACHO_H
static llvm::raw_ostream & error(Stream &strm)
bool SectionIsLoadable(const lldb_private::Section *section)
llvm::MachO::mach_header m_header
bool m_allow_assembly_emulation_unwind_plans
std::optional< llvm::VersionTuple > m_min_os_version
lldb_private::UUID GetSharedCacheUUID(lldb_private::FileSpec dyld_shared_cache, const lldb::ByteOrder byte_order, const uint32_t addr_byte_size)
lldb_private::AddressableBits GetAddressableBits() override
Some object files may have the number of bits used for addressing embedded in them,...
uint32_t GetDependentModules(lldb_private::FileSpecList &files) override
Extract the dependent modules from an object file.
static lldb_private::ObjectFile * CreateMemoryInstance(const lldb::ModuleSP &module_sp, lldb::WritableDataBufferSP data_sp, const lldb::ProcessSP &process_sp, lldb::addr_t header_addr)
FileRangeArray m_thread_context_offsets
lldb_private::RangeVector< uint32_t, uint32_t > FileRangeArray
ObjectFile::Type CalculateType() override
The object file should be able to calculate its type by looking at its file header and possibly the s...
lldb_private::RangeVector< uint32_t, uint32_t, 8 > EncryptedFileRanges
~ObjectFileMachO() override=default
static bool MagicBytesMatch(lldb::DataExtractorSP extractor_sp, lldb::addr_t offset, lldb::addr_t length)
std::vector< std::tuple< lldb::offset_t, lldb::offset_t > > FindLC_NOTEByName(std::string name)
void Dump(lldb_private::Stream *s) override
Dump a description of this object to a Stream.
bool AllowAssemblyEmulationUnwindPlans() override
Returns if the function bounds for symbols in this symbol file are likely accurate.
std::string GetIdentifierString() override
Some object files may have an identifier string embedded in them, e.g.
void ProcessSegmentCommand(const llvm::MachO::load_command &load_cmd, lldb::offset_t offset, uint32_t cmd_idx, SegmentParsingContext &context)
std::vector< llvm::MachO::section_64 > m_mach_sections
static llvm::StringRef GetSegmentNameLINKEDIT()
bool SetLoadAddress(lldb_private::Target &target, lldb::addr_t value, bool value_is_offset) override
Sets the load address for an entire module, assuming a rigid slide of sections, if possible in the im...
void GetProcessSharedCacheUUID(lldb_private::Process *, lldb::addr_t &base_addr, lldb_private::UUID &uuid)
Intended for same-host arm device debugging where lldb needs to detect libraries in the shared cache ...
bool IsGOTSection(const lldb_private::Section &section) const override
Returns true if the section is a global offset table section.
llvm::StringRef GetPluginName() override
bool GetIsDynamicLinkEditor() override
Return true if this file is a dynamic link editor (dyld)
lldb::ByteOrder GetByteOrder() const override
Gets whether endian swapping should occur when extracting data from this object file.
bool ParseHeader() override
Attempts to parse the object header.
bool IsStripped() override
Detect if this object file has been stripped of local symbols.
bool isA(const void *ClassID) const override
lldb_private::UUID GetUUID() override
Gets the UUID for this object file.
llvm::VersionTuple GetMinimumOSVersion() override
Get the minimum OS version this object file can run on.
static llvm::StringRef GetPluginDescriptionStatic()
static llvm::StringRef GetPluginNameStatic()
lldb::RegisterContextSP GetThreadContextAtIndex(uint32_t idx, lldb_private::Thread &thread) override
lldb_private::FileSpecList m_reexported_dylibs
static void GetAllArchSpecs(const llvm::MachO::mach_header &header, const lldb_private::DataExtractor &data, lldb::offset_t lc_offset, lldb_private::ModuleSpec &base_spec, lldb_private::ModuleSpecList &all_specs)
Enumerate all ArchSpecs supported by this Mach-O file.
static bool classof(const ObjectFile *obj)
bool GetCorefileThreadExtraInfos(std::vector< lldb::tid_t > &tids) override
Get metadata about thread ids from the corefile.
static llvm::StringRef GetSectionNameEHFrame()
bool IsDynamicLoader() const
static void Terminate()
bool IsExecutable() const override
Tells whether this object file is capable of being the main executable for a process.
lldb_private::Address GetEntryPointAddress() override
Returns the address of the Entry Point in this object file - if the object file doesn't have an entry...
lldb_private::Address m_entry_point_address
static void Initialize()
bool LoadCoreFileImages(lldb_private::Process &process) override
Load binaries listed in a corefile.
bool CanTrustAddressRanges() override
Can we trust the address ranges accelerator associated with this object file to be complete.
void SanitizeSegmentCommand(llvm::MachO::segment_command_64 &seg_cmd, uint32_t cmd_idx)
static lldb_private::ObjectFile * CreateInstance(const lldb::ModuleSP &module_sp, lldb::DataExtractorSP extractor_sp, lldb::offset_t data_offset, const lldb_private::FileSpec *file, lldb::offset_t file_offset, lldb::offset_t length)
bool IsSharedCacheBinary() const
llvm::VersionTuple GetSDKVersion() override
Get the SDK OS version this object file was built with.
lldb_private::ArchSpec GetArchitecture() override
Get the ArchSpec for this object file.
lldb_private::FileSpecList GetReExportedLibraries() override
Gets the file spec list of libraries re-exported by this object file.
lldb_private::Address GetBaseAddress() override
Returns base address of this object file.
size_t ParseSymtab()
static llvm::StringRef GetSectionNameLLDBNoNlist()
lldb::addr_t m_text_address
uint32_t GetAddressByteSize() const override
Gets the address size in bytes for the current object file.
static lldb_private::ModuleSpecList GetModuleSpecifications(const lldb_private::FileSpec &file, lldb::DataExtractorSP &extractor_sp, lldb::offset_t file_offset, lldb::offset_t length)
static llvm::StringRef GetSegmentNameDATA()
llvm::MachO::dysymtab_command m_dysymtab
bool GetCorefileMainBinaryInfo(lldb::addr_t &value, bool &value_is_offset, lldb_private::UUID &uuid, ObjectFile::BinaryType &type) override
static llvm::StringRef GetSegmentNameDATA_DIRTY()
static bool SaveCore(const lldb::ProcessSP &process_sp, lldb_private::SaveCoreOptions &options, lldb_private::Status &error)
void ProcessDysymtabCommand(const llvm::MachO::load_command &load_cmd, lldb::offset_t offset)
static llvm::StringRef GetSegmentNameLLVM_COV()
MachOCorefileAllImageInfos GetCorefileAllImageInfos()
Get the list of binary images that were present in the process when the corefile was produced.
lldb::addr_t CalculateSectionLoadAddressForMemoryImage(lldb::addr_t mach_header_load_address, const lldb_private::Section *mach_header_section, const lldb_private::Section *section)
bool m_thread_context_offsets_valid
ObjectFile::Strata CalculateStrata() override
The object file should be able to calculate the strata of the object file.
void CreateSections(lldb_private::SectionList &unified_section_list) override
static llvm::StringRef GetSegmentNameDATA_CONST()
lldb_private::AddressClass GetAddressClass(lldb::addr_t file_addr) override
Get the address type given a file address in an object file.
lldb_private::StructuredData::ObjectSP GetCorefileProcessMetadata() override
Get process metadata from the corefile in a StructuredData dictionary.
static llvm::StringRef GetSegmentNameOBJC()
std::optional< llvm::VersionTuple > m_sdk_versions
ObjectFileMachO(const lldb::ModuleSP &module_sp, lldb::DataExtractorSP extractor_sp, lldb::offset_t data_offset, const lldb_private::FileSpec *file, lldb::offset_t offset, lldb::offset_t length)
void GetLLDBSharedCacheUUID(lldb::addr_t &base_addir, lldb_private::UUID &uuid)
Intended for same-host arm device debugging where lldb will read shared cache libraries out of its ow...
llvm::VersionTuple GetVersion() override
Get the object file version numbers.
EncryptedFileRanges GetEncryptedFileRanges()
uint32_t GetNumThreadContexts() override
static llvm::StringRef GetSegmentNameDWARF()
static llvm::StringRef GetSegmentNameTEXT()
lldb::offset_t m_linkedit_original_offset
lldb_private::Section * GetMachHeaderSection()
A section + offset based address class.
Definition Address.h:62
A class which holds the metadata from a remote stub/corefile note about how many bits are used for ad...
An architecture specification class.
Definition ArchSpec.h:32
An data extractor class.
A file collection class.
A file utility class.
Definition FileSpec.h:56
A plug-in interface definition class for object file parsers.
Definition ObjectFile.h:46
ObjectFile(const lldb::ModuleSP &module_sp, const FileSpec *file_spec_ptr, lldb::offset_t file_offset, lldb::offset_t length, lldb::DataExtractorSP extractor_sp, lldb::offset_t data_offset)
Construct with a parent module, offset, and header data.
A plug-in interface definition class for debugging a process.
Definition Process.h:367
An error handling class.
Definition Status.h:118
A stream class that can stream formatted output to a file.
Definition Stream.h:28
std::shared_ptr< Object > ObjectSP
Represents UUID's of various sizes.
Definition UUID.h:27
#define LLDB_INVALID_ADDRESS
A class that represents a running process on the host machine.
uint64_t offset_t
Definition lldb-types.h:86
std::shared_ptr< lldb_private::Process > ProcessSP
ByteOrder
Byte ordering definitions.
std::shared_ptr< lldb_private::WritableDataBuffer > WritableDataBufferSP
uint64_t addr_t
Definition lldb-types.h:80
std::shared_ptr< lldb_private::RegisterContext > RegisterContextSP
std::shared_ptr< lldb_private::DataExtractor > DataExtractorSP
std::shared_ptr< lldb_private::Module > ModuleSP
void operator=(const llvm::MachO::dyld_info_command &in)
DyldInfoCommandLargeOffsets(const llvm::MachO::dyld_info_command &in)
uint32_t cmd
LC_DYLD_INFO or LC_DYLD_INFO_ONLY.
DysymtabCommandLargeOffsets(const llvm::MachO::dysymtab_command &in)
void operator=(const llvm::MachO::dysymtab_command &in)
LCNoteEntry(lldb::ByteOrder byte_order)
lldb_private::StreamString payload
LinkeditDataCommandLargeOffsets(const llvm::MachO::linkedit_data_command &in)
void operator=(const llvm::MachO::linkedit_data_command &in)
std::vector< MachOCorefileImageEntry > all_image_infos
A corefile may include metadata about all of the binaries that were present in the process when the c...
std::vector< std::tuple< lldb_private::ConstString, lldb::addr_t > > segment_load_addresses
void operator=(const llvm::MachO::symtab_command &in)
SymtabCommandLargeOffsets(const llvm::MachO::symtab_command &in)