aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
diff options
context:
space:
mode:
authorjimingham <jingham@apple.com>2025-04-01 09:54:06 -0700
committerGitHub <noreply@github.com>2025-04-01 09:54:06 -0700
commit347c5a7af5adfe81b79dd77f7f88c626b09e8534 (patch)
tree255a19d32683aa0dac7061db4919b9cc21c2edff /lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
parentec290a43f68b469197abce65949fde84ecdc9146 (diff)
downloadllvm-347c5a7af5adfe81b79dd77f7f88c626b09e8534.zip
llvm-347c5a7af5adfe81b79dd77f7f88c626b09e8534.tar.gz
llvm-347c5a7af5adfe81b79dd77f7f88c626b09e8534.tar.bz2
Add a new affordance that the Python module in a dSYM (#133290)
So the dSYM can be told what target it has been loaded into. When lldb is loading modules, while creating a target, it will run "command script import" on any Python modules in Resources/Python in the dSYM. However, this happens WHILE the target is being created, so it is not yet in the target list. That means that these scripts can't act on the target that they a part of when they get loaded. This patch adds a new python API that lldb will call: __lldb_module_added_to_target if it is defined in the module, passing in the Target the module was being added to, so that code in these dSYM's don't have to guess.
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp')
-rw-r--r--lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
index 4b7694d..a9c8127 100644
--- a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
+++ b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
@@ -2316,7 +2316,7 @@ uint64_t replace_all(std::string &str, const std::string &oldStr,
bool ScriptInterpreterPythonImpl::LoadScriptingModule(
const char *pathname, const LoadScriptOptions &options,
lldb_private::Status &error, StructuredData::ObjectSP *module_sp,
- FileSpec extra_search_dir) {
+ FileSpec extra_search_dir, lldb::TargetSP target_sp) {
namespace fs = llvm::sys::fs;
namespace path = llvm::sys::path;
@@ -2495,6 +2495,12 @@ bool ScriptInterpreterPythonImpl::LoadScriptingModule(
PyRefType::Owned, static_cast<PyObject *>(module_pyobj)));
}
+ // Finally, if we got a target passed in, then we should tell the new module
+ // about this target:
+ if (target_sp)
+ return SWIGBridge::LLDBSwigPythonCallModuleNewTarget(
+ module_name.c_str(), m_dictionary_name.c_str(), target_sp);
+
return true;
}