================
@@ -1742,20 +1742,37 @@ SymbolFileDWARF::GetDwoSymbolFileForCompileUnit(
if (std::shared_ptr<SymbolFileDWARFDwo> dwp_sp = GetDwpSymbolFile())
return dwp_sp;
- FileSpec dwo_file(dwo_name);
- FileSystem::Instance().Resolve(dwo_file);
- bool found = false;
+ const char *comp_dir =
+ cu_die.GetAttributeValueAsString(dwarf_cu, DW_AT_comp_dir, nullptr);
+
+ // Try locating the dwo via the callback first.
+ FileSpec dwo_file;
+ SymbolFile::LocateDwoCallback locate_dwo_callback =
+ SymbolFile::GetLocateDwoCallback();
+ if (locate_dwo_callback) {
+ const FileSpec &objfile_spec = m_objfile_sp->GetFileSpec();
+ Status error = locate_dwo_callback(objfile_spec, dwo_name, comp_dir,
+ dwarf_cu->GetDWOId().value(), dwo_file);
+ if (error.Fail()) {
+ GetObjectFile()->GetModule()->ReportWarning(
+ "locate DWO callback failed with error: {0}",
+ error.AsCString("unknown error"));
+ }
----------------
clayborg wrote:
I don't know if we should report a warning every time we fail to find a .dwo
file. Probably best to use an appropriate log channel for this.
https://github.com/llvm/llvm-project/pull/69517
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits