aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
diff options
context:
space:
mode:
authorMed Ismail Bennani <ismail@bennani.ma>2024-09-20 16:55:47 -0700
committerGitHub <noreply@github.com>2024-09-20 16:55:47 -0700
commitf732157a9d067e4d300905c831a964222e0eadee (patch)
tree919f5c971db1c4f4e102ac08289acd46164101ca /lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
parentcdf29709d7554c197b371c83e798bc6335f67a33 (diff)
downloadllvm-f732157a9d067e4d300905c831a964222e0eadee.zip
llvm-f732157a9d067e4d300905c831a964222e0eadee.tar.gz
llvm-f732157a9d067e4d300905c831a964222e0eadee.tar.bz2
[lldb/Interpreter] Introduce ScriptedStopHook{,Python}Interface & make use of it (#109498)
This patch re-lands #105449 and fixes the various test failures. --------- Signed-off-by: Med Ismail Bennani <ismail@bennani.ma>
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp')
-rw-r--r--lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp56
1 files changed, 5 insertions, 51 deletions
diff --git a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
index 63691d2..155efc0 100644
--- a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
+++ b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
@@ -1559,6 +1559,11 @@ ScriptInterpreterPythonImpl::CreateScriptedProcessInterface() {
return std::make_unique<ScriptedProcessPythonInterface>(*this);
}
+ScriptedStopHookInterfaceSP
+ScriptInterpreterPythonImpl::CreateScriptedStopHookInterface() {
+ return std::make_shared<ScriptedStopHookPythonInterface>(*this);
+}
+
ScriptedThreadInterfaceSP
ScriptInterpreterPythonImpl::CreateScriptedThreadInterface() {
return std::make_shared<ScriptedThreadPythonInterface>(*this);
@@ -1654,57 +1659,6 @@ ScriptInterpreterPythonImpl::ScriptedBreakpointResolverSearchDepth(
return lldb::eSearchDepthModule;
}
-StructuredData::GenericSP ScriptInterpreterPythonImpl::CreateScriptedStopHook(
- TargetSP target_sp, const char *class_name,
- const StructuredDataImpl &args_data, Status &error) {
-
- if (!target_sp) {
- error = Status::FromErrorString("No target for scripted stop-hook.");
- return StructuredData::GenericSP();
- }
-
- if (class_name == nullptr || class_name[0] == '\0') {
- error = Status::FromErrorString("No class name for scripted stop-hook.");
- return StructuredData::GenericSP();
- }
-
- ScriptInterpreterPythonImpl *python_interpreter =
- GetPythonInterpreter(m_debugger);
-
- if (!python_interpreter) {
- error = Status::FromErrorString(
- "No script interpreter for scripted stop-hook.");
- return StructuredData::GenericSP();
- }
-
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
-
- PythonObject ret_val = SWIGBridge::LLDBSwigPythonCreateScriptedStopHook(
- target_sp, class_name, python_interpreter->m_dictionary_name.c_str(),
- args_data, error);
-
- return StructuredData::GenericSP(
- new StructuredPythonObject(std::move(ret_val)));
-}
-
-bool ScriptInterpreterPythonImpl::ScriptedStopHookHandleStop(
- StructuredData::GenericSP implementor_sp, ExecutionContext &exc_ctx,
- lldb::StreamSP stream_sp) {
- assert(implementor_sp &&
- "can't call a stop hook with an invalid implementor");
- assert(stream_sp && "can't call a stop hook with an invalid stream");
-
- Locker py_lock(this,
- Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
-
- lldb::ExecutionContextRefSP exc_ctx_ref_sp(new ExecutionContextRef(exc_ctx));
-
- bool ret_val = SWIGBridge::LLDBSwigPythonStopHookCallHandleStop(
- implementor_sp->GetValue(), exc_ctx_ref_sp, stream_sp);
- return ret_val;
-}
-
StructuredData::ObjectSP
ScriptInterpreterPythonImpl::LoadPluginModule(const FileSpec &file_spec,
lldb_private::Status &error) {