From b9d4c94a603d3cc1f44ab7dd1d4f3ae9c80da98b Mon Sep 17 00:00:00 2001 From: Med Ismail Bennani Date: Fri, 3 Mar 2023 15:17:59 -0800 Subject: [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 --- .../API/functionalities/scripted_process/TestScriptedProcess.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py') diff --git a/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py b/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py index 1078db8ad52a..053654c14421 100644 --- a/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py +++ b/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py @@ -137,8 +137,14 @@ class ScriptedProcesTestCase(TestBase): target_1 = self.dbg.CreateTarget(self.getBuildArtifact("a.out")) self.assertTrue(target_1, VALID_TARGET) + + # We still need to specify a PID when attaching even for scripted processes + attach_info = lldb.SBAttachInfo(42) + attach_info.SetProcessPluginName("ScriptedProcess") + attach_info.SetScriptedProcessClassName("dummy_scripted_process.DummyScriptedProcess") + error = lldb.SBError() - process_1 = target_1.Launch(launch_info, error) + process_1 = target_1.Attach(attach_info, error) self.assertTrue(process_1 and process_1.IsValid(), PROCESS_IS_VALID) self.assertEqual(process_1.GetProcessID(), 42) self.assertEqual(process_1.GetNumThreads(), 1) -- cgit v1.2.3