From 249a5fb005ea27b57d12fc4425d6f1039d85c1cb Mon Sep 17 00:00:00 2001 From: Pavel Labath Date: Thu, 30 Dec 2021 15:29:00 +0100 Subject: [PATCH] [lldb/qemu] Support setting arg0 of the debugged program Just what it says on the box. --- .../source/Plugins/Platform/QemuUser/PlatformQemuUser.cpp | 4 ++++ lldb/test/API/qemu/TestQemuLaunch.py | 8 ++++++++ lldb/test/API/qemu/qemu.py | 1 + 3 files changed, 13 insertions(+) diff --git a/lldb/source/Plugins/Platform/QemuUser/PlatformQemuUser.cpp b/lldb/source/Plugins/Platform/QemuUser/PlatformQemuUser.cpp index 572a5b39985e..84e10042a97c 100644 --- a/lldb/source/Plugins/Platform/QemuUser/PlatformQemuUser.cpp +++ b/lldb/source/Plugins/Platform/QemuUser/PlatformQemuUser.cpp @@ -175,6 +175,10 @@ lldb::ProcessSP PlatformQemuUser::DebugProcess(ProcessLaunchInfo &launch_info, } while (FileSystem::Instance().Exists(socket_path)); Args args({qemu.GetPath(), "-g", socket_path}); + if (!launch_info.GetArg0().empty()) { + args.AppendArgument("-0"); + args.AppendArgument(launch_info.GetArg0()); + } args.AppendArguments(GetGlobalProperties().GetEmulatorArgs()); args.AppendArgument("--"); args.AppendArgument(launch_info.GetExecutableFile().GetPath()); diff --git a/lldb/test/API/qemu/TestQemuLaunch.py b/lldb/test/API/qemu/TestQemuLaunch.py index 01c4143c9e77..e27d7a70fa0b 100644 --- a/lldb/test/API/qemu/TestQemuLaunch.py +++ b/lldb/test/API/qemu/TestQemuLaunch.py @@ -241,3 +241,11 @@ class TestQemuLaunch(TestBase): "%s=from platform,%s=from target" % (var(1), var(2))) self.assertEqual(state["environ"]["QEMU_UNSET_ENV"], "%s,%s,QEMU_SET_ENV,QEMU_UNSET_ENV" % (var(3), var(4))) + + def test_arg0(self): + target = self._create_target() + self.runCmd("settings set target.arg0 ARG0") + state = self._run_and_get_state(target) + + self.assertEqual(state["program"], self.getBuildArtifact()) + self.assertEqual(state["0"], "ARG0") diff --git a/lldb/test/API/qemu/qemu.py b/lldb/test/API/qemu/qemu.py index a74976881cbc..05fbfddc017b 100755 --- a/lldb/test/API/qemu/qemu.py +++ b/lldb/test/API/qemu/qemu.py @@ -56,6 +56,7 @@ def main(): parser = argparse.ArgumentParser(description=_description, formatter_class=argparse.RawDescriptionHelpFormatter) parser.add_argument('-g', metavar="unix-socket", required=True) + parser.add_argument('-0', metavar="arg0") parser.add_argument('-fake-arg', dest="fake-arg") parser.add_argument('program', help="The program to 'emulate'.") parser.add_argument("args", nargs=argparse.REMAINDER)