This revision was automatically updated to reflect the committed changes.
Closed by commit rGcc0fc3585405: [LLDB] Fix the use of "platform process
launch" with no extra arguments (authored by DavidSpickett).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D153636/new/
https://reviews.llvm.org/D153636
Files:
lldb/source/Commands/CommandObjectPlatform.cpp
lldb/test/API/commands/platform/process/launch/Makefile
lldb/test/API/commands/platform/process/launch/TestPlatformProcessLaunch.py
lldb/test/API/commands/platform/process/launch/main.c
Index: lldb/test/API/commands/platform/process/launch/main.c
===================================================================
--- /dev/null
+++ lldb/test/API/commands/platform/process/launch/main.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+
+int main(int argc, char const *argv[]) {
+ printf("Got %d argument(s).\n", argc);
+ for (int i = 0; i < argc; ++i)
+ printf("[%d]: %s\n", i, argv[i]);
+ return 0;
+}
Index: lldb/test/API/commands/platform/process/launch/TestPlatformProcessLaunch.py
===================================================================
--- /dev/null
+++ lldb/test/API/commands/platform/process/launch/TestPlatformProcessLaunch.py
@@ -0,0 +1,59 @@
+"""
+Test platform process launch.
+"""
+
+from textwrap import dedent
+from lldbsuite.test.lldbtest import TestBase
+
+
+class ProcessLaunchTestCase(TestBase):
+ NO_DEBUG_INFO_TESTCASE = True
+
+ def setup(self):
+ self.build()
+ exe = self.getBuildArtifact("a.out")
+ self.runCmd("file " + exe)
+ return (exe, self.getBuildArtifact("stdio.log"))
+
+ def test_process_launch_no_args(self):
+ # When there are no extra arguments we just have 0, the program name.
+ exe, outfile = self.setup()
+ self.runCmd("platform process launch --stdout {} -s".format(outfile))
+ self.runCmd("continue")
+
+ with open(outfile) as f:
+ self.assertEqual(dedent("""\
+ Got 1 argument(s).
+ [0]: {}
+ """.format(exe)), f.read())
+
+ def test_process_launch_command_args(self):
+ exe, outfile = self.setup()
+ # Arguments given via the command override those in the settings.
+ self.runCmd("settings set target.run-args D E")
+ self.runCmd("platform process launch --stdout {} -s -- A B C".format(outfile))
+ self.runCmd("continue")
+
+ with open(outfile) as f:
+ self.assertEqual(dedent("""\
+ Got 4 argument(s).
+ [0]: {}
+ [1]: A
+ [2]: B
+ [3]: C
+ """.format(exe)), f.read())
+
+ def test_process_launch_target_args(self):
+ exe, outfile = self.setup()
+ # When no arguments are passed via the command, use the setting.
+ self.runCmd("settings set target.run-args D E")
+ self.runCmd("platform process launch --stdout {}".format(outfile))
+ self.runCmd("continue")
+
+ with open(outfile) as f:
+ self.assertEqual(dedent("""\
+ Got 3 argument(s).
+ [0]: {}
+ [1]: D
+ [2]: E
+ """.format(exe)), f.read())
\ No newline at end of file
Index: lldb/test/API/commands/platform/process/launch/Makefile
===================================================================
--- /dev/null
+++ lldb/test/API/commands/platform/process/launch/Makefile
@@ -0,0 +1,3 @@
+C_SOURCES := main.c
+
+include Makefile.rules
Index: lldb/source/Commands/CommandObjectPlatform.cpp
===================================================================
--- lldb/source/Commands/CommandObjectPlatform.cpp
+++ lldb/source/Commands/CommandObjectPlatform.cpp
@@ -1207,8 +1207,12 @@
if (m_options.launch_info.GetExecutableFile()) {
Debugger &debugger = GetDebugger();
- if (argc == 0)
- target->GetRunArguments(m_options.launch_info.GetArguments());
+ if (argc == 0) {
+ // If no arguments were given to the command, use target.run-args.
+ Args target_run_args;
+ target->GetRunArguments(target_run_args);
+ m_options.launch_info.GetArguments().AppendArguments(target_run_args);
+ }
ProcessSP process_sp(platform_sp->DebugProcess(
m_options.launch_info, debugger, *target, error));
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits