[Lldb-commits] [lldb] r358938 - Add a small check to PlatformDarwin::LoadScriptingResourceForModule
Jason Molenda via lldb-commits
lldb-commits at lists.llvm.org
Mon Apr 22 18:02:52 PDT 2019
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())) {
More information about the lldb-commits
mailing list