[lldb/Plugins] Add Attach capabilities to ScriptedProcess
This patch adds process attach capabilities to the ScriptedProcess
plugin. This doesn't really expects a PID or process name, since the
process state is already script, however, this allows to create a
scripted process without requiring to have an executuble in the target.
In order to do so, this patch also turns the scripted process related
getters and setters from the `ProcessLaunchInfo` and
`ProcessAttachInfo` classes to a `ScriptedMetadata` instance and moves
it in the `ProcessInfo` class, so it can be accessed interchangeably.
This also adds the necessary SWIG wrappers to convert the internal
`Process{Attach,Launch}InfoSP` into a `SB{Attach,Launch}Info` to pass it
as argument the scripted process python implementation and convert it
back to the internal representation.
rdar://104577406
Differential Revision: https://reviews.llvm.org/D143104
Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
This commit is contained in:
1 parent
3014a1c5a1
commit
b9d4c94a60
31 files changed
+316
-109
No files matched your search
@@ -15,7 +15,6 @@
|
||||
// LLDB Python header must be included first
|
||||
#include "lldb-python.h"
|
||||
|
||||
#include "SWIGPythonBridge.h"
|
||||
#include "ScriptInterpreterPythonImpl.h"
|
||||
#include "ScriptedPythonInterface.h"
|
||||
#include <optional>
|
||||
@@ -71,6 +70,36 @@ ScriptedPythonInterface::ExtractValueFromPythonObject<lldb::DataExtractorSP>(
|
||||
return m_interpreter.GetDataExtractorFromSBData(*sb_data);
|
||||
}
|
||||
|
||||
template <>
|
||||
lldb::ProcessAttachInfoSP ScriptedPythonInterface::ExtractValueFromPythonObject<
|
||||
lldb::ProcessAttachInfoSP>(python::PythonObject &p, Status &error) {
|
||||
lldb::SBAttachInfo *sb_attach_info = reinterpret_cast<lldb::SBAttachInfo *>(
|
||||
LLDBSWIGPython_CastPyObjectToSBAttachInfo(p.get()));
|
||||
|
||||
if (!sb_attach_info) {
|
||||
error.SetErrorString(
|
||||
"Couldn't cast lldb::SBAttachInfo to lldb::ProcessAttachInfoSP.");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return m_interpreter.GetOpaqueTypeFromSBAttachInfo(*sb_attach_info);
|
||||
}
|
||||
|
||||
template <>
|
||||
lldb::ProcessLaunchInfoSP ScriptedPythonInterface::ExtractValueFromPythonObject<
|
||||
lldb::ProcessLaunchInfoSP>(python::PythonObject &p, Status &error) {
|
||||
lldb::SBLaunchInfo *sb_launch_info = reinterpret_cast<lldb::SBLaunchInfo *>(
|
||||
LLDBSWIGPython_CastPyObjectToSBLaunchInfo(p.get()));
|
||||
|
||||
if (!sb_launch_info) {
|
||||
error.SetErrorString(
|
||||
"Couldn't cast lldb::SBLaunchInfo to lldb::ProcessLaunchInfoSP.");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return m_interpreter.GetOpaqueTypeFromSBLaunchInfo(*sb_launch_info);
|
||||
}
|
||||
|
||||
template <>
|
||||
std::optional<MemoryRegionInfo>
|
||||
ScriptedPythonInterface::ExtractValueFromPythonObject<
|
||||
|
||||
Reference in new issue
Block a user