Author: jmolenda Date: Mon Apr 22 18:02:51 2019 New Revision: 358938 URL: http://llvm.org/viewvc/llvm-project?rev=358938&view=rev Log: Add a small check to PlatformDarwin::LoadScriptingResourceForModule which reads the python files in a dSYM bundle, to check that the SymbolFile is actually a dSYM bundle filepath; delay any fetching of the ScriptInterpreter until after we've done that check.
When debugging a binary without a dSYM on darwin systems, the SymbolFile we fetch is actually the ObjectFile -- so we would do an unnecessary trip into Python land and stat around the filesystem looking for a python file to read in. There's no reason to do any of this unless the SymbolFile's file path includes the .dSYM bundle telltale path components. <rdar://problem/50065315> Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp?rev=358938&r1=358937&r2=358938&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp (original) +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp Mon Apr 22 18:02:51 2019 @@ -68,8 +68,6 @@ FileSpecList PlatformDarwin::LocateExecu // precisely that. Ideally, we should have a per-platform list of // extensions (".exe", ".app", ".dSYM", ".framework") which should be // stripped while leaving "this.binary.file" as-is. - ScriptInterpreter *script_interpreter = - target->GetDebugger().GetCommandInterpreter().GetScriptInterpreter(); FileSpec module_spec = module.GetFileSpec(); @@ -81,7 +79,10 @@ FileSpecList PlatformDarwin::LocateExecu ObjectFile *objfile = symfile->GetObjectFile(); if (objfile) { FileSpec symfile_spec(objfile->GetFileSpec()); - if (symfile_spec && FileSystem::Instance().Exists(symfile_spec)) { + if (symfile_spec && + FileSystem::Instance().Exists(symfile_spec) && + strcasestr (symfile_spec.GetPath().c_str(), + ".dSYM/Contents/Resources/DWARF") != nullptr) { while (module_spec.GetFilename()) { std::string module_basename( module_spec.GetFilename().GetCString()); @@ -103,6 +104,8 @@ FileSpecList PlatformDarwin::LocateExecu ' ', '_'); std::replace(module_basename.begin(), module_basename.end(), '-', '_'); + ScriptInterpreter *script_interpreter = + target->GetDebugger().GetCommandInterpreter().GetScriptInterpreter(); if (script_interpreter && script_interpreter->IsReservedWord( module_basename.c_str())) { _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits