[Lldb-commits] [lldb] 249a5fb - [lldb/qemu] Support setting arg0 of the debugged program

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Fri Dec 31 02:23:37 PST 2021


Author: Pavel Labath
Date: 2021-12-31T10:57:35+01:00
New Revision: 249a5fb005ea27b57d12fc4425d6f1039d85c1cb

URL: https://github.com/llvm/llvm-project/commit/249a5fb005ea27b57d12fc4425d6f1039d85c1cb
DIFF: https://github.com/llvm/llvm-project/commit/249a5fb005ea27b57d12fc4425d6f1039d85c1cb.diff

LOG: [lldb/qemu] Support setting arg0 of the debugged program

Just what it says on the box.

Added: 
    

Modified: 
    lldb/source/Plugins/Platform/QemuUser/PlatformQemuUser.cpp
    lldb/test/API/qemu/TestQemuLaunch.py
    lldb/test/API/qemu/qemu.py

Removed: 
    


################################################################################
diff  --git a/lldb/source/Plugins/Platform/QemuUser/PlatformQemuUser.cpp b/lldb/source/Plugins/Platform/QemuUser/PlatformQemuUser.cpp
index 572a5b39985ec..84e10042a97c7 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 01c4143c9e77e..e27d7a70fa0bb 100644
--- a/lldb/test/API/qemu/TestQemuLaunch.py
+++ b/lldb/test/API/qemu/TestQemuLaunch.py
@@ -241,3 +241,11 @@ def cleanup():
                 "%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 a74976881cbc5..05fbfddc017bc 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)


        


More information about the lldb-commits mailing list