[Lldb-commits] [lldb] [lldb] Add mechanism for auto-loading Python scripts from pre-configured paths (PR #187031)
Michael Buch via lldb-commits
lldb-commits at lists.llvm.org
Fri Mar 20 02:08:49 PDT 2026
================
@@ -155,10 +157,80 @@ Status Platform::GetFileWithUUID(const FileSpec &platform_file,
return Status();
}
+FileSpecList Platform::LocateExecutableScriptingResourcesFromSafePaths(
+ Stream &feedback_stream, FileSpec module_spec, const Target &target) {
+ assert(module_spec);
+ assert(target.GetDebugger().GetScriptInterpreter());
+
+ // For now only Python scripts supported for auto-loading.
+ if (target.GetDebugger().GetScriptLanguage() != eScriptLanguagePython)
+ return {};
+
+ ScriptInterpreter::SanitizedScriptingModuleName sanitized_name =
+ target.GetDebugger()
+ .GetScriptInterpreter()
+ ->GetSanitizedScriptingModuleName(
+ module_spec.GetFileNameStrippingExtension().GetStringRef());
+
+ FileSpecList file_list;
+ FileSpecList paths = Debugger::GetSafeAutoLoadPaths();
+
+ // Iterate in reverse so we consider the latest appended path first.
+ for (FileSpec path : llvm::reverse(paths)) {
+ path.AppendPathComponent(sanitized_name.GetOriginalName());
+
+ // Resolve relative paths and '~'.
+ FileSystem::Instance().Resolve(path);
+
+ if (!FileSystem::Instance().Exists(path))
+ continue;
+
+ FileSpec script_fspec = path;
+ script_fspec.AppendPathComponent(
+ llvm::formatv("{0}.py", sanitized_name.GetSanitizedName()).str());
+
+ FileSpec orig_script_fspec = path;
+ orig_script_fspec.AppendPathComponent(
+ llvm::formatv("{0}.py", sanitized_name.GetOriginalName()).str());
+
+ WarnIfInvalidUnsanitizedScriptExists(feedback_stream, sanitized_name,
+ orig_script_fspec, script_fspec);
+
+ if (FileSystem::Instance().Exists(script_fspec))
+ file_list.Append(script_fspec);
+
+ // If we successfully found a directory in a safe auto-load path
+ // stop looking at any other paths.
+ break;
+ }
+
+ return file_list;
+}
+
+FileSpecList
+Platform::LocateExecutableScriptingResourcesImpl(Target *target, Module &module,
----------------
Michael137 wrote:
Yea I'm not a big fan of the `Impl` suffix either. Perhaps `LocateExecutableScriptingResourcesForPlatform`?
https://github.com/llvm/llvm-project/pull/187031
More information about the lldb-commits
mailing list