This revision was automatically updated to reflect the committed changes.
Closed by commit rGcd7b45057ca9: [lldb/API] Make Launch(Simple) use args and
env from target properties (authored by friss).
Changed prior to commit:
https://reviews.llvm.org/D76045?vs=249834&id=252051#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D76045/new/
https://reviews.llvm.org/D76045
Files:
lldb/include/lldb/API/SBTarget.h
lldb/source/API/SBTarget.cpp
lldb/test/API/commands/settings/TestSettings.py
Index: lldb/test/API/commands/settings/TestSettings.py
===================================================================
--- lldb/test/API/commands/settings/TestSettings.py
+++ lldb/test/API/commands/settings/TestSettings.py
@@ -204,10 +204,15 @@
@skipIfDarwinEmbedded # <rdar://problem/34446098> debugserver on ios etc can't write files
def test_run_args_and_env_vars(self):
+ self.do_test_run_args_and_env_vars(use_launchsimple=False)
+
+ @skipIfDarwinEmbedded # <rdar://problem/34446098> debugserver on ios etc can't write files
+ def test_launchsimple_args_and_env_vars(self):
+ self.do_test_run_args_and_env_vars(use_launchsimple=True)
+
+ def do_test_run_args_and_env_vars(self, use_launchsimple):
"""Test that run-args and env-vars are passed to the launched process."""
self.build()
- exe = self.getBuildArtifact("a.out")
- self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
# Set the run-args and the env-vars.
# And add hooks to restore the settings during tearDown().
@@ -218,7 +223,11 @@
self.addTearDownHook(
lambda: self.runCmd("settings clear target.env-vars"))
- launch_info = self.dbg.GetTargetAtIndex(0).GetLaunchInfo()
+ exe = self.getBuildArtifact("a.out")
+ self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
+
+ target = self.dbg.GetTargetAtIndex(0)
+ launch_info = target.GetLaunchInfo()
found_env_var = False
for i in range(0, launch_info.GetNumEnvironmentEntries()):
if launch_info.GetEnvironmentEntryAtIndex(i) == "MY_ENV_VAR=YES":
@@ -227,7 +236,12 @@
self.assertTrue(found_env_var,
"MY_ENV_VAR was not set in LunchInfo object")
- self.runCmd("process launch --working-dir '{0}'".format(self.get_process_working_directory()),
+ wd = self.get_process_working_directory()
+ if use_launchsimple:
+ process = target.LaunchSimple(None, None, wd)
+ self.assertTrue(process)
+ else:
+ self.runCmd("process launch --working-dir '{0}'".format(wd),
RUN_SUCCEEDED)
# Read the output file produced by running the program.
Index: lldb/source/API/SBTarget.cpp
===================================================================
--- lldb/source/API/SBTarget.cpp
+++ lldb/source/API/SBTarget.cpp
@@ -371,10 +371,19 @@
Module *exe_module = target_sp->GetExecutableModulePointer();
if (exe_module)
launch_info.SetExecutableFile(exe_module->GetPlatformFileSpec(), true);
- if (argv)
+ if (argv) {
launch_info.GetArguments().AppendArguments(argv);
- if (envp)
+ } else {
+ auto default_launch_info = target_sp->GetProcessLaunchInfo();
+ launch_info.GetArguments().AppendArguments(
+ default_launch_info.GetArguments());
+ }
+ if (envp) {
launch_info.GetEnvironment() = Environment(envp);
+ } else {
+ auto default_launch_info = target_sp->GetProcessLaunchInfo();
+ launch_info.GetEnvironment() = default_launch_info.GetEnvironment();
+ }
if (listener.IsValid())
launch_info.SetListener(listener.GetSP());
Index: lldb/include/lldb/API/SBTarget.h
===================================================================
--- lldb/include/lldb/API/SBTarget.h
+++ lldb/include/lldb/API/SBTarget.h
@@ -127,7 +127,9 @@
/// The argument array.
///
/// \param[in] envp
- /// The environment array.
+ /// The environment array. If this is null, the default
+ /// environment values (provided through `settings set
+ /// target.env-vars`) will be used.
///
/// \param[in] stdin_path
/// The path to use when re-directing the STDIN of the new
@@ -175,7 +177,9 @@
/// The argument array.
///
/// \param[in] envp
- /// The environment array.
+ /// The environment array. If this isn't provided, the default
+ /// environment values (provided through `settings set
+ /// target.env-vars`) will be used.
///
/// \param[in] working_directory
/// The working directory to have the child process run in
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits