Skip to content

Commit d3cbf9f

Browse files
authored
[lldb] Add logging to ObjectFileMachO::ParseSymtab (llvm#70490)
I have a crash when parsing the dyld trie data and I want to ask the originator to send me the (possibly corrupted) binary that's causing this. This patch adds some logging to help pinpoint that file.
1 parent 22c3d9d commit d3cbf9f

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2220,9 +2220,12 @@ void ObjectFileMachO::ParseSymtab(Symtab &symtab) {
22202220
if (!module_sp)
22212221
return;
22222222

2223+
Log *log = GetLog(LLDBLog::Symbols);
2224+
22232225
const FileSpec &file = m_file ? m_file : module_sp->GetFileSpec();
22242226
const char *file_name = file.GetFilename().AsCString("<Unknown>");
22252227
LLDB_SCOPED_TIMERF("ObjectFileMachO::ParseSymtab () module = %s", file_name);
2228+
LLDB_LOG(log, "Parsing symbol table for {0}", file_name);
22262229
Progress progress(llvm::formatv("Parsing symbol table for {0}", file_name));
22272230

22282231
llvm::MachO::symtab_command symtab_load_command = {0, 0, 0, 0, 0, 0};
@@ -2252,7 +2255,6 @@ void ObjectFileMachO::ParseSymtab(Symtab &symtab) {
22522255
lldb::offset_t offset = MachHeaderSizeFromMagic(m_header.magic);
22532256
uint32_t i;
22542257
FileSpecList dylib_files;
2255-
Log *log = GetLog(LLDBLog::Symbols);
22562258
llvm::StringRef g_objc_v2_prefix_class("_OBJC_CLASS_$_");
22572259
llvm::StringRef g_objc_v2_prefix_metaclass("_OBJC_METACLASS_$_");
22582260
llvm::StringRef g_objc_v2_prefix_ivar("_OBJC_IVAR_$_");
@@ -2652,7 +2654,9 @@ void ObjectFileMachO::ParseSymtab(Symtab &symtab) {
26522654
std::vector<TrieEntryWithOffset> external_sym_trie_entries;
26532655
std::set<lldb::addr_t> resolver_addresses;
26542656

2655-
if (dyld_trie_data.GetByteSize() > 0) {
2657+
const size_t dyld_trie_data_size = dyld_trie_data.GetByteSize();
2658+
if (dyld_trie_data_size > 0) {
2659+
LLDB_LOG(log, "Parsing {0} bytes of dyld trie data", dyld_trie_data_size);
26562660
SectionSP text_segment_sp =
26572661
GetSectionList()->FindSectionByName(GetSegmentNameTEXT());
26582662
lldb::addr_t text_segment_file_addr = LLDB_INVALID_ADDRESS;

0 commit comments

Comments
 (0)