diff --git a/lldb/include/lldb/Host/FileAction.h b/lldb/include/lldb/Host/FileAction.h index d3166c16a5854..b2cc8be32d296 100644 --- a/lldb/include/lldb/Host/FileAction.h +++ b/lldb/include/lldb/Host/FileAction.h @@ -39,8 +39,6 @@ class FileAction { int GetActionArgument() const { return m_arg; } - llvm::StringRef GetPath() const; - const FileSpec &GetFileSpec() const; void Dump(Stream &stream) const; diff --git a/lldb/source/Host/common/FileAction.cpp b/lldb/source/Host/common/FileAction.cpp index e1c3e14a165ea..ec271f7b920d8 100644 --- a/lldb/source/Host/common/FileAction.cpp +++ b/lldb/source/Host/common/FileAction.cpp @@ -25,10 +25,6 @@ void FileAction::Clear() { m_file_spec.Clear(); } -llvm::StringRef FileAction::GetPath() const { - return m_file_spec.GetPathAsConstString().AsCString(); -} - const FileSpec &FileAction::GetFileSpec() const { return m_file_spec; } bool FileAction::Open(int fd, const FileSpec &file_spec, bool read, diff --git a/lldb/source/Host/macosx/objcxx/Host.mm b/lldb/source/Host/macosx/objcxx/Host.mm index 96a282c64e44c..16bca0f1b0079 100644 --- a/lldb/source/Host/macosx/objcxx/Host.mm +++ b/lldb/source/Host/macosx/objcxx/Host.mm @@ -1013,20 +1013,29 @@ static Status LaunchProcessXPC(const char *exe_path, xpc_dictionary_set_int64(message, LauncherXPCServicePosixspawnFlagsKey, GetPosixspawnFlags(launch_info)); const FileAction *file_action = launch_info.GetFileActionForFD(STDIN_FILENO); - if (file_action && !file_action->GetPath().empty()) { + std::string file_action_path; + if (file_action) + file_action_path = file_action->GetFileSpec().GetPath(); + + if (!file_action_path.empty()) xpc_dictionary_set_string(message, LauncherXPCServiceStdInPathKeyKey, - file_action->GetPath().str().c_str()); - } + file_action_path.c_str()); + file_action = launch_info.GetFileActionForFD(STDOUT_FILENO); - if (file_action && !file_action->GetPath().empty()) { + if (file_action) + file_action_path = file_action->GetFileSpec().GetPath(); + + if (!file_action_path.empty()) xpc_dictionary_set_string(message, LauncherXPCServiceStdOutPathKeyKey, - file_action->GetPath().str().c_str()); - } + file_action_path.c_str()); + file_action = launch_info.GetFileActionForFD(STDERR_FILENO); - if (file_action && !file_action->GetPath().empty()) { + if (file_action) + file_action_path = file_action->GetFileSpec().GetPath(); + + if (!file_action_path.empty()) xpc_dictionary_set_string(message, LauncherXPCServiceStdErrPathKeyKey, - file_action->GetPath().str().c_str()); - } + file_action_path.c_str()); xpc_object_t reply = xpc_connection_send_message_with_reply_sync(conn, message); @@ -1135,16 +1144,16 @@ static bool AddPosixSpawnFileAction(void *_file_actions, const FileAction *info, if (oflag & O_CREAT) mode = 0640; - error = Status(::posix_spawn_file_actions_addopen( - file_actions, info->GetFD(), - info->GetPath().str().c_str(), oflag, mode), - eErrorTypePOSIX); + const std::string file_path(info->GetFileSpec().GetPath()); + error = Status( + ::posix_spawn_file_actions_addopen(file_actions, info->GetFD(), + file_path.c_str(), oflag, mode), + eErrorTypePOSIX); if (error.Fail()) LLDB_LOG(log, "error: {0}, posix_spawn_file_actions_addopen (action={1}, " "fd={2}, path='{3}', oflag={4}, mode={5})", - error, file_actions, info->GetFD(), info->GetPath(), oflag, - mode); + error, file_actions, info->GetFD(), file_path, oflag, mode); } break; } diff --git a/lldb/source/Host/posix/ProcessLauncherPosixFork.cpp b/lldb/source/Host/posix/ProcessLauncherPosixFork.cpp index 15a809784fbc4..a5f5cc52697e4 100644 --- a/lldb/source/Host/posix/ProcessLauncherPosixFork.cpp +++ b/lldb/source/Host/posix/ProcessLauncherPosixFork.cpp @@ -229,8 +229,8 @@ struct ForkLaunchInfo { // End of code running in the child process. ForkFileAction::ForkFileAction(const FileAction &act) - : action(act.GetAction()), fd(act.GetFD()), path(act.GetPath().str()), - arg(act.GetActionArgument()) {} + : action(act.GetAction()), fd(act.GetFD()), + path(act.GetFileSpec().GetPath()), arg(act.GetActionArgument()) {} static std::vector MakeForkActions(const ProcessLaunchInfo &info) { diff --git a/lldb/source/Target/Target.cpp b/lldb/source/Target/Target.cpp index b6a662ad3f14d..2305f1019ea4f 100644 --- a/lldb/source/Target/Target.cpp +++ b/lldb/source/Target/Target.cpp @@ -5145,17 +5145,17 @@ void TargetProperties::SetProcessLaunchInfo( const FileAction *input_file_action = launch_info.GetFileActionForFD(STDIN_FILENO); if (input_file_action) { - SetStandardInputPath(input_file_action->GetPath()); + SetStandardInputPath(input_file_action->GetFileSpec().GetPath()); } const FileAction *output_file_action = launch_info.GetFileActionForFD(STDOUT_FILENO); if (output_file_action) { - SetStandardOutputPath(output_file_action->GetPath()); + SetStandardOutputPath(output_file_action->GetFileSpec().GetPath()); } const FileAction *error_file_action = launch_info.GetFileActionForFD(STDERR_FILENO); if (error_file_action) { - SetStandardErrorPath(error_file_action->GetPath()); + SetStandardErrorPath(error_file_action->GetFileSpec().GetPath()); } SetDetachOnError(launch_info.GetFlags().Test(lldb::eLaunchFlagDetachOnError)); SetDisableASLR(launch_info.GetFlags().Test(lldb::eLaunchFlagDisableASLR));