Skip to content

Revert "[LLDB] Add a target.launch-working-dir setting" #114973

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions lldb/include/lldb/Target/Target.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@
#include "lldb/Utility/RealpathPrefixes.h"
#include "lldb/Utility/Timeout.h"
#include "lldb/lldb-public.h"
#include "llvm/ADT/StringRef.h"

namespace lldb_private {

Expand Down Expand Up @@ -115,8 +114,6 @@ class TargetProperties : public Properties {

void SetDisableSTDIO(bool b);

llvm::StringRef GetLaunchWorkingDirectory() const;

const char *GetDisassemblyFlavor() const;

InlineStrategy GetInlineStrategy() const;
Expand Down
7 changes: 0 additions & 7 deletions lldb/source/Commands/CommandObjectProcess.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -201,13 +201,6 @@ class CommandObjectProcessLaunch : public CommandObjectProcessLaunchOrAttach {
if (target->GetDisableSTDIO())
m_options.launch_info.GetFlags().Set(eLaunchFlagDisableSTDIO);

if (!m_options.launch_info.GetWorkingDirectory()) {
if (llvm::StringRef wd = target->GetLaunchWorkingDirectory();
!wd.empty()) {
m_options.launch_info.SetWorkingDirectory(FileSpec(wd));
}
}

// Merge the launch info environment with the target environment.
Environment target_env = target->GetEnvironment();
m_options.launch_info.GetEnvironment().insert(target_env.begin(),
Expand Down
5 changes: 1 addition & 4 deletions lldb/source/Commands/Options.td
Original file line number Diff line number Diff line change
Expand Up @@ -691,10 +691,7 @@ let Command = "process launch" in {
def process_launch_plugin : Option<"plugin", "P">, Arg<"Plugin">,
Desc<"Name of the process plugin you want to use.">;
def process_launch_working_dir : Option<"working-dir", "w">, Arg<"DirectoryName">,
Desc<"Set the current working directory to <path> when running the inferior. This option "
"applies only to the current `process launch` invocation. If "
"`target.launch-working-dir` is set and this option is given, the value of this "
"option will be used instead of the setting.">;
Desc<"Set the current working directory to <path> when running the inferior.">;
def process_launch_arch : Option<"arch", "a">, Arg<"Architecture">,
Desc<"Set the architecture for the process to launch when ambiguous.">;
def process_launch_environment : Option<"environment", "E">,
Expand Down
5 changes: 0 additions & 5 deletions lldb/source/Target/Target.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4471,11 +4471,6 @@ void TargetProperties::SetDisableSTDIO(bool b) {
const uint32_t idx = ePropertyDisableSTDIO;
SetPropertyAtIndex(idx, b);
}
llvm::StringRef TargetProperties::GetLaunchWorkingDirectory() const {
const uint32_t idx = ePropertyLaunchWorkingDir;
return GetPropertyAtIndexAs<llvm::StringRef>(
idx, g_target_properties[idx].default_cstr_value);
}

const char *TargetProperties::GetDisassemblyFlavor() const {
const uint32_t idx = ePropertyDisassemblyFlavor;
Expand Down
7 changes: 0 additions & 7 deletions lldb/source/Target/TargetProperties.td
Original file line number Diff line number Diff line change
Expand Up @@ -201,13 +201,6 @@ let Definition = "target" in {
def DebugUtilityExpression: Property<"debug-utility-expression", "Boolean">,
DefaultFalse,
Desc<"Enable debugging of LLDB-internal utility expressions.">;
def LaunchWorkingDir: Property<"launch-working-dir", "String">,
DefaultStringValue<"">,
Desc<"A default value for the working directory to use when launching processes. "
"It is ignored when empty. This setting is only used when the target is "
"launched. If you change this setting, the new value will only apply to "
"subsequent launches. Commands that take an explicit working directory "
"will override this setting.">;
}

let Definition = "process_experimental" in {
Expand Down
57 changes: 0 additions & 57 deletions lldb/test/API/commands/process/launch/TestProcessLaunch.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil
from pathlib import Path


class ProcessLaunchTestCase(TestBase):
Expand Down Expand Up @@ -207,59 +206,3 @@ def test_environment_with_special_char(self):
self.assertEqual(value, evil_var)
process.Continue()
self.assertState(process.GetState(), lldb.eStateExited, PROCESS_EXITED)

def test_target_launch_working_dir_prop(self):
"""Test that the setting `target.launch-working-dir` is correctly used when launching a process."""
d = {"CXX_SOURCES": "print_cwd.cpp"}
self.build(dictionary=d)
self.setTearDownCleanup(d)
exe = self.getBuildArtifact("a.out")
self.runCmd("file " + exe)

mywd = "my_working_dir"
out_file_name = "my_working_dir_test.out"

my_working_dir_path = self.getBuildArtifact(mywd)
lldbutil.mkdir_p(my_working_dir_path)
out_file_path = os.path.join(my_working_dir_path, out_file_name)
another_working_dir_path = Path(
os.path.join(my_working_dir_path, "..")
).resolve()

# If -w is not passed to process launch, then the setting will be used.
self.runCmd(
f"settings set target.launch-working-dir {another_working_dir_path}"
)
launch_command = f"process launch -o {out_file_path}"

self.expect(
launch_command,
patterns=["Process .* launched: .*a.out"],
)

out = lldbutil.read_file_on_target(self, out_file_path)

self.assertIn(f"stdout: {another_working_dir_path}", out)

# If -w is passed to process launch, that value will be used instead of the setting.
launch_command = f"process launch -w {my_working_dir_path} -o {out_file_path}"

self.expect(
launch_command,
patterns=["Process .* launched: .*a.out"],
)

out = lldbutil.read_file_on_target(self, out_file_path)
self.assertIn(f"stdout: {my_working_dir_path}", out)

# If set to empty, then LLDB's cwd will be used to launch the process.
self.runCmd(f"settings set target.launch-working-dir ''")
launch_command = f"process launch -o {out_file_path}"

self.expect(
launch_command,
patterns=["Process .* launched: .*a.out"],
)

out = lldbutil.read_file_on_target(self, out_file_path)
self.assertNotIn(f"stdout: {another_working_dir_path}", out)
2 changes: 0 additions & 2 deletions llvm/docs/ReleaseNotes.md
Original file line number Diff line number Diff line change
Expand Up @@ -309,8 +309,6 @@ Changes to LLDB
* Program stdout/stderr redirection will now open the file with O_TRUNC flag, make sure to truncate the file if path already exists.
* eg. `settings set target.output-path/target.error-path <path/to/file>`

* A new setting `target.launch-working-dir` can be used to set a persistent cwd that is used by default by `process launch` and `run`.

Changes to BOLT
---------------------------------

Expand Down
Loading