Index: source/Commands/CommandObjectTarget.cpp =================================================================== --- source/Commands/CommandObjectTarget.cpp +++ source/Commands/CommandObjectTarget.cpp @@ -3469,25 +3469,21 @@ SymbolVendor *symbol_vendor = module->GetSymbolVendor(); if (symbol_vendor) { - SymbolFile *symbol_file = symbol_vendor->GetSymbolFile(); - if (symbol_file) + const FileSpec &symfile_spec = module->GetSymbolFileFileSpec(); + 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/Core/Module.cpp =================================================================== --- source/Core/Module.cpp +++ source/Core/Module.cpp @@ -1047,6 +1047,17 @@ Timer scoped_timer(__PRETTY_FUNCTION__, __PRETTY_FUNCTION__); m_symfile_ap.reset(SymbolVendor::FindPlugin(shared_from_this(), feedback_strm)); m_did_load_symbol_vendor = true; + // Update symbol file specification. + if (m_symfile_ap) + { + SymbolFile *symbol_file = m_symfile_ap->GetSymbolFile(); + if (symbol_file) + { + ObjectFile *obj_file = symbol_file->GetObjectFile(); + if (obj_file) + m_symfile_spec = obj_file->GetFileSpec(); + } + } } } return m_symfile_ap.get();