Index: include/lldb/Symbol/SymbolVendor.h =================================================================== --- include/lldb/Symbol/SymbolVendor.h +++ include/lldb/Symbol/SymbolVendor.h @@ -164,6 +164,9 @@ return m_sym_file_ap.get(); } + FileSpec + GetMainFileSpec() const; + // Get module unified section list symbol table. virtual Symtab * GetSymtab (); Index: source/Commands/CommandObjectTarget.cpp =================================================================== --- source/Commands/CommandObjectTarget.cpp +++ source/Commands/CommandObjectTarget.cpp @@ -3467,28 +3467,24 @@ case 's': case 'S': { - SymbolVendor *symbol_vendor = module->GetSymbolVendor(); + const SymbolVendor *symbol_vendor = module->GetSymbolVendor(); if (symbol_vendor) { - SymbolFile *symbol_file = symbol_vendor->GetSymbolFile(); - if (symbol_file) + const FileSpec symfile_spec = symbol_vendor->GetMainFileSpec(); + if (format_char == 'S') { - if (format_char == 'S') + // Dump symbol file only if different from module file + if (!symfile_spec || symfile_spec == module->GetFileSpec()) { - FileSpec &symfile_spec = symbol_file->GetObjectFile()->GetFileSpec(); - // Dump symbol file only if different from module file - if (!symfile_spec || symfile_spec == module->GetFileSpec()) - { - print_space = false; - break; - } - // Add a newline and indent past the index - strm.Printf ("\n%*s", indent, ""); + print_space = false; + break; } - DumpFullpath (strm, &symbol_file->GetObjectFile()->GetFileSpec(), width); - dump_object_name = true; - break; + // Add a newline and indent past the index + strm.Printf ("\n%*s", indent, ""); } + DumpFullpath (strm, &symfile_spec, width); + dump_object_name = true; + break; } strm.Printf("%.*s", width, ""); } Index: source/Symbol/SymbolVendor.cpp =================================================================== --- source/Symbol/SymbolVendor.cpp +++ source/Symbol/SymbolVendor.cpp @@ -437,6 +437,19 @@ return cu_sp; } +FileSpec +SymbolVendor::GetMainFileSpec() const +{ + if (m_sym_file_ap.get()) + { + const ObjectFile *symfile_objfile = m_sym_file_ap->GetObjectFile(); + if (symfile_objfile) + return symfile_objfile->GetFileSpec(); + } + + return FileSpec(); +} + Symtab * SymbolVendor::GetSymtab () {