diff options
Diffstat (limited to 'lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp')
-rw-r--r-- | lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp index 079fd90..4aa85a9 100644 --- a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp +++ b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp @@ -2235,11 +2235,11 @@ void ObjectFileMachO::ParseSymtab(Symtab &symtab) { LLDB_LOG(log, "Parsing symbol table for {0}", file_name); Progress progress("Parsing symbol table", file_name); - llvm::MachO::symtab_command symtab_load_command = {0, 0, 0, 0, 0, 0}; llvm::MachO::linkedit_data_command function_starts_load_command = {0, 0, 0, 0}; llvm::MachO::linkedit_data_command exports_trie_load_command = {0, 0, 0, 0}; llvm::MachO::dyld_info_command dyld_info = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; llvm::MachO::dysymtab_command dysymtab = m_dysymtab; + SymtabCommandLargeOffsets symtab_load_command; // The data element of type bool indicates that this entry is thumb // code. typedef AddressDataArray<lldb::addr_t, bool, 100> FunctionStarts; @@ -2276,12 +2276,20 @@ void ObjectFileMachO::ParseSymtab(Symtab &symtab) { // Watch for the symbol table load command switch (lc.cmd) { case LC_SYMTAB: + // struct symtab_command { + // uint32_t cmd; /* LC_SYMTAB */ + // uint32_t cmdsize; /* sizeof(struct symtab_command) */ + // uint32_t symoff; /* symbol table offset */ + // uint32_t nsyms; /* number of symbol table entries */ + // uint32_t stroff; /* string table offset */ + // uint32_t strsize; /* string table size in bytes */ + // }; symtab_load_command.cmd = lc.cmd; symtab_load_command.cmdsize = lc.cmdsize; - // Read in the rest of the symtab load command - if (m_data.GetU32(&offset, &symtab_load_command.symoff, 4) == - nullptr) // fill in symoff, nsyms, stroff, strsize fields - return; + symtab_load_command.symoff = m_data.GetU32(&offset); + symtab_load_command.nsyms = m_data.GetU32(&offset); + symtab_load_command.stroff = m_data.GetU32(&offset); + symtab_load_command.strsize = m_data.GetU32(&offset); break; case LC_DYLD_INFO: |