================ @@ -195,20 +196,40 @@ ModuleSP DynamicLoader::LoadBinaryWithUUIDAndAddress( Target &target = process->GetTarget(); Status error; + StreamString prog_str; + if (!name.empty()) { + prog_str << name.str() << " "; + } + if (uuid.IsValid()) + prog_str << uuid.GetAsString(); + if (value_is_offset == 0 && value != LLDB_INVALID_ADDRESS) { + prog_str << "at 0x"; + prog_str.PutHex64(value); + } + if (!uuid.IsValid() && !value_is_offset) { + Progress progress_memread("Reading load commands from memory", + prog_str.GetString().str()); memory_module_sp = ReadUnnamedMemoryModule(process, value, name); - if (memory_module_sp) + if (memory_module_sp) { uuid = memory_module_sp->GetUUID(); + if (uuid.IsValid()) { + prog_str << " "; + prog_str << uuid.GetAsString(); + } + } } ModuleSpec module_spec; module_spec.GetUUID() = uuid; FileSpec name_filespec(name); - if (FileSystem::Instance().Exists(name_filespec)) - module_spec.GetFileSpec() = name_filespec; if (uuid.IsValid()) { + Progress progress("Locating external symbol file", + prog_str.GetString().str()); + // Has lldb already seen a module with this UUID? + // Or have external lookup enabled in DebugSymbols on macOS. ---------------- jasonmolenda wrote:
It's a little tricky because we do call ModuleList::GetSharedModule which will return a module if it's already in the global module cache, and it will call into the DebugSymbols framework on macOS, where it might call an external program to do a slow copy of a binary to the local computer. But after that, it then goes on to call `LocateExecutableSymbolFile` `LocateExecutableObjectFile` looking in known local filesystem locations. If that fails, then it calls `DownloadObjectAndSymbolFile (force_symbol_search=true)` which can call out to an external program to do a slow copy of a binary to the local computer. I wanted to log one message to cover possibly all of these being run. https://github.com/llvm/llvm-project/pull/98845 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits