forked from OSchip/llvm-project
Move PseudoTerminal to the lldb_private namespace
lldb_utility doesn't make sense, as it is no longer even living in the "utility" module. llvm-svn: 320346
This commit is contained in:
parent
390b487994
commit
07d6f881e7
|
@ -9,14 +9,13 @@
|
||||||
|
|
||||||
#ifndef LLDB_HOST_PSEUDOTERMINAL_H
|
#ifndef LLDB_HOST_PSEUDOTERMINAL_H
|
||||||
#define LLDB_HOST_PSEUDOTERMINAL_H
|
#define LLDB_HOST_PSEUDOTERMINAL_H
|
||||||
#if defined(__cplusplus)
|
|
||||||
|
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "lldb/lldb-defines.h"
|
#include "lldb/lldb-defines.h"
|
||||||
|
|
||||||
namespace lldb_utility {
|
namespace lldb_private {
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
/// @class PseudoTerminal PseudoTerminal.h "lldb/Host/PseudoTerminal.h"
|
/// @class PseudoTerminal PseudoTerminal.h "lldb/Host/PseudoTerminal.h"
|
||||||
|
@ -246,7 +245,6 @@ private:
|
||||||
DISALLOW_COPY_AND_ASSIGN(PseudoTerminal);
|
DISALLOW_COPY_AND_ASSIGN(PseudoTerminal);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace lldb_utility
|
} // namespace lldb_private
|
||||||
|
|
||||||
#endif // #if defined(__cplusplus)
|
|
||||||
#endif // #ifndef liblldb_PseudoTerminal_h_
|
#endif // #ifndef liblldb_PseudoTerminal_h_
|
||||||
|
|
|
@ -117,7 +117,7 @@ public:
|
||||||
|
|
||||||
bool MonitorProcess() const;
|
bool MonitorProcess() const;
|
||||||
|
|
||||||
lldb_utility::PseudoTerminal &GetPTY() { return *m_pty; }
|
PseudoTerminal &GetPTY() { return *m_pty; }
|
||||||
|
|
||||||
// Get and set the actual listener that will be used for the process events
|
// Get and set the actual listener that will be used for the process events
|
||||||
lldb::ListenerSP GetListener() const { return m_listener_sp; }
|
lldb::ListenerSP GetListener() const { return m_listener_sp; }
|
||||||
|
@ -150,7 +150,7 @@ protected:
|
||||||
FileSpec m_shell;
|
FileSpec m_shell;
|
||||||
Flags m_flags; // Bitwise OR of bits from lldb::LaunchFlags
|
Flags m_flags; // Bitwise OR of bits from lldb::LaunchFlags
|
||||||
std::vector<FileAction> m_file_actions; // File actions for any other files
|
std::vector<FileAction> m_file_actions; // File actions for any other files
|
||||||
std::shared_ptr<lldb_utility::PseudoTerminal> m_pty;
|
std::shared_ptr<PseudoTerminal> m_pty;
|
||||||
uint32_t m_resume_count; // How many times do we resume after launching
|
uint32_t m_resume_count; // How many times do we resume after launching
|
||||||
Host::MonitorChildProcessCallback m_monitor_callback;
|
Host::MonitorChildProcessCallback m_monitor_callback;
|
||||||
void *m_monitor_callback_baton;
|
void *m_monitor_callback_baton;
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
int posix_openpt(int flags);
|
int posix_openpt(int flags);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
using namespace lldb_utility;
|
using namespace lldb_private;
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
// PseudoTerminal constructor
|
// PseudoTerminal constructor
|
||||||
|
|
|
@ -372,7 +372,7 @@ PlatformLinux::DebugProcess(ProcessLaunchInfo &launch_info, Debugger &debugger,
|
||||||
// Hook up process PTY if we have one (which we should for local debugging
|
// Hook up process PTY if we have one (which we should for local debugging
|
||||||
// with llgs).
|
// with llgs).
|
||||||
int pty_fd = launch_info.GetPTY().ReleaseMasterFileDescriptor();
|
int pty_fd = launch_info.GetPTY().ReleaseMasterFileDescriptor();
|
||||||
if (pty_fd != lldb_utility::PseudoTerminal::invalid_fd) {
|
if (pty_fd != PseudoTerminal::invalid_fd) {
|
||||||
process_sp->SetSTDIOFileDescriptor(pty_fd);
|
process_sp->SetSTDIOFileDescriptor(pty_fd);
|
||||||
LLDB_LOG(log, "hooked up STDIO pty to process");
|
LLDB_LOG(log, "hooked up STDIO pty to process");
|
||||||
} else
|
} else
|
||||||
|
|
|
@ -206,7 +206,7 @@ lldb::ProcessSP PlatformAppleSimulator::DebugProcess(
|
||||||
// open for stdin/out/err after we have already opened the master
|
// open for stdin/out/err after we have already opened the master
|
||||||
// so we can read/write stdin/out/err.
|
// so we can read/write stdin/out/err.
|
||||||
int pty_fd = launch_info.GetPTY().ReleaseMasterFileDescriptor();
|
int pty_fd = launch_info.GetPTY().ReleaseMasterFileDescriptor();
|
||||||
if (pty_fd != lldb_utility::PseudoTerminal::invalid_fd) {
|
if (pty_fd != PseudoTerminal::invalid_fd) {
|
||||||
process_sp->SetSTDIOFileDescriptor(pty_fd);
|
process_sp->SetSTDIOFileDescriptor(pty_fd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -393,7 +393,7 @@ lldb::ProcessSP PlatformNetBSD::DebugProcess(
|
||||||
// Hook up process PTY if we have one (which we should for local debugging
|
// Hook up process PTY if we have one (which we should for local debugging
|
||||||
// with llgs).
|
// with llgs).
|
||||||
int pty_fd = launch_info.GetPTY().ReleaseMasterFileDescriptor();
|
int pty_fd = launch_info.GetPTY().ReleaseMasterFileDescriptor();
|
||||||
if (pty_fd != lldb_utility::PseudoTerminal::invalid_fd) {
|
if (pty_fd != PseudoTerminal::invalid_fd) {
|
||||||
process_sp->SetSTDIOFileDescriptor(pty_fd);
|
process_sp->SetSTDIOFileDescriptor(pty_fd);
|
||||||
if (log)
|
if (log)
|
||||||
log->Printf("PlatformNetBSD::%s pid %" PRIu64
|
log->Printf("PlatformNetBSD::%s pid %" PRIu64
|
||||||
|
|
|
@ -144,7 +144,7 @@ static Status ForkChildForPTraceDebugging(const char *path, char const *argv[],
|
||||||
// Use a fork that ties the child process's stdin/out/err to a pseudo
|
// Use a fork that ties the child process's stdin/out/err to a pseudo
|
||||||
// terminal so we can read it in our MachProcess::STDIOThread
|
// terminal so we can read it in our MachProcess::STDIOThread
|
||||||
// as unbuffered io.
|
// as unbuffered io.
|
||||||
lldb_utility::PseudoTerminal pty;
|
PseudoTerminal pty;
|
||||||
char fork_error[256];
|
char fork_error[256];
|
||||||
memset(fork_error, 0, sizeof(fork_error));
|
memset(fork_error, 0, sizeof(fork_error));
|
||||||
*pid = static_cast<::pid_t>(pty.Fork(fork_error, sizeof(fork_error)));
|
*pid = static_cast<::pid_t>(pty.Fork(fork_error, sizeof(fork_error)));
|
||||||
|
|
|
@ -843,7 +843,7 @@ bool ProcessMonitor::Launch(LaunchArgs *args) {
|
||||||
const FileSpec &stderr_file_spec = args->m_stderr_file_spec;
|
const FileSpec &stderr_file_spec = args->m_stderr_file_spec;
|
||||||
const FileSpec &working_dir = args->m_working_dir;
|
const FileSpec &working_dir = args->m_working_dir;
|
||||||
|
|
||||||
lldb_utility::PseudoTerminal terminal;
|
PseudoTerminal terminal;
|
||||||
const size_t err_len = 1024;
|
const size_t err_len = 1024;
|
||||||
char err_str[err_len];
|
char err_str[err_len];
|
||||||
::pid_t pid;
|
::pid_t pid;
|
||||||
|
|
|
@ -817,7 +817,7 @@ Status ProcessGDBRemote::DoLaunch(Module *exe_module,
|
||||||
if (object_file) {
|
if (object_file) {
|
||||||
error = EstablishConnectionIfNeeded(launch_info);
|
error = EstablishConnectionIfNeeded(launch_info);
|
||||||
if (error.Success()) {
|
if (error.Success()) {
|
||||||
lldb_utility::PseudoTerminal pty;
|
PseudoTerminal pty;
|
||||||
const bool disable_stdio = (launch_flags & eLaunchFlagDisableSTDIO) != 0;
|
const bool disable_stdio = (launch_flags & eLaunchFlagDisableSTDIO) != 0;
|
||||||
|
|
||||||
PlatformSP platform_sp(GetTarget().GetPlatform());
|
PlatformSP platform_sp(GetTarget().GetPlatform());
|
||||||
|
@ -946,8 +946,7 @@ Status ProcessGDBRemote::DoLaunch(Module *exe_module,
|
||||||
SetPrivateState(SetThreadStopInfo(response));
|
SetPrivateState(SetThreadStopInfo(response));
|
||||||
|
|
||||||
if (!disable_stdio) {
|
if (!disable_stdio) {
|
||||||
if (pty.GetMasterFileDescriptor() !=
|
if (pty.GetMasterFileDescriptor() != PseudoTerminal::invalid_fd)
|
||||||
lldb_utility::PseudoTerminal::invalid_fd)
|
|
||||||
SetSTDIOFileDescriptor(pty.ReleaseMasterFileDescriptor());
|
SetSTDIOFileDescriptor(pty.ReleaseMasterFileDescriptor());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1196,7 +1196,7 @@ Platform::DebugProcess(ProcessLaunchInfo &launch_info, Debugger &debugger,
|
||||||
// open for stdin/out/err after we have already opened the master
|
// open for stdin/out/err after we have already opened the master
|
||||||
// so we can read/write stdin/out/err.
|
// so we can read/write stdin/out/err.
|
||||||
int pty_fd = launch_info.GetPTY().ReleaseMasterFileDescriptor();
|
int pty_fd = launch_info.GetPTY().ReleaseMasterFileDescriptor();
|
||||||
if (pty_fd != lldb_utility::PseudoTerminal::invalid_fd) {
|
if (pty_fd != PseudoTerminal::invalid_fd) {
|
||||||
process_sp->SetSTDIOFileDescriptor(pty_fd);
|
process_sp->SetSTDIOFileDescriptor(pty_fd);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -39,10 +39,9 @@ using namespace lldb_private;
|
||||||
|
|
||||||
ProcessLaunchInfo::ProcessLaunchInfo()
|
ProcessLaunchInfo::ProcessLaunchInfo()
|
||||||
: ProcessInfo(), m_working_dir(), m_plugin_name(), m_flags(0),
|
: ProcessInfo(), m_working_dir(), m_plugin_name(), m_flags(0),
|
||||||
m_file_actions(), m_pty(new lldb_utility::PseudoTerminal),
|
m_file_actions(), m_pty(new PseudoTerminal), m_resume_count(0),
|
||||||
m_resume_count(0), m_monitor_callback(nullptr),
|
m_monitor_callback(nullptr), m_monitor_callback_baton(nullptr),
|
||||||
m_monitor_callback_baton(nullptr), m_monitor_signals(false),
|
m_monitor_signals(false), m_listener_sp(), m_hijack_listener_sp() {}
|
||||||
m_listener_sp(), m_hijack_listener_sp() {}
|
|
||||||
|
|
||||||
ProcessLaunchInfo::ProcessLaunchInfo(const FileSpec &stdin_file_spec,
|
ProcessLaunchInfo::ProcessLaunchInfo(const FileSpec &stdin_file_spec,
|
||||||
const FileSpec &stdout_file_spec,
|
const FileSpec &stdout_file_spec,
|
||||||
|
@ -50,10 +49,9 @@ ProcessLaunchInfo::ProcessLaunchInfo(const FileSpec &stdin_file_spec,
|
||||||
const FileSpec &working_directory,
|
const FileSpec &working_directory,
|
||||||
uint32_t launch_flags)
|
uint32_t launch_flags)
|
||||||
: ProcessInfo(), m_working_dir(), m_plugin_name(), m_flags(launch_flags),
|
: ProcessInfo(), m_working_dir(), m_plugin_name(), m_flags(launch_flags),
|
||||||
m_file_actions(), m_pty(new lldb_utility::PseudoTerminal),
|
m_file_actions(), m_pty(new PseudoTerminal), m_resume_count(0),
|
||||||
m_resume_count(0), m_monitor_callback(nullptr),
|
m_monitor_callback(nullptr), m_monitor_callback_baton(nullptr),
|
||||||
m_monitor_callback_baton(nullptr), m_monitor_signals(false),
|
m_monitor_signals(false), m_listener_sp(), m_hijack_listener_sp() {
|
||||||
m_listener_sp(), m_hijack_listener_sp() {
|
|
||||||
if (stdin_file_spec) {
|
if (stdin_file_spec) {
|
||||||
FileAction file_action;
|
FileAction file_action;
|
||||||
const bool read = true;
|
const bool read = true;
|
||||||
|
|
|
@ -25,6 +25,8 @@
|
||||||
#include "lldb/Utility/Status.h"
|
#include "lldb/Utility/Status.h"
|
||||||
#include "lldb/Utility/StringList.h"
|
#include "lldb/Utility/StringList.h"
|
||||||
|
|
||||||
|
using namespace lldb_private;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
const size_t TIMEOUT_MILLIS = 5000;
|
const size_t TIMEOUT_MILLIS = 5000;
|
||||||
}
|
}
|
||||||
|
@ -81,7 +83,7 @@ private:
|
||||||
|
|
||||||
std::unique_ptr<lldb_private::Editline> _editline_sp;
|
std::unique_ptr<lldb_private::Editline> _editline_sp;
|
||||||
|
|
||||||
lldb_utility::PseudoTerminal _pty;
|
PseudoTerminal _pty;
|
||||||
int _pty_master_fd;
|
int _pty_master_fd;
|
||||||
int _pty_slave_fd;
|
int _pty_slave_fd;
|
||||||
|
|
||||||
|
|
|
@ -110,7 +110,7 @@ TEST_F(MainLoopTest, TerminatesImmediately) {
|
||||||
|
|
||||||
#ifdef LLVM_ON_UNIX
|
#ifdef LLVM_ON_UNIX
|
||||||
TEST_F(MainLoopTest, DetectsEOF) {
|
TEST_F(MainLoopTest, DetectsEOF) {
|
||||||
lldb_utility::PseudoTerminal term;
|
PseudoTerminal term;
|
||||||
ASSERT_TRUE(term.OpenFirstAvailableMaster(O_RDWR, nullptr, 0));
|
ASSERT_TRUE(term.OpenFirstAvailableMaster(O_RDWR, nullptr, 0));
|
||||||
ASSERT_TRUE(term.OpenSlave(O_RDWR | O_NOCTTY, nullptr, 0));
|
ASSERT_TRUE(term.OpenSlave(O_RDWR | O_NOCTTY, nullptr, 0));
|
||||||
auto conn = llvm::make_unique<ConnectionFileDescriptor>(
|
auto conn = llvm::make_unique<ConnectionFileDescriptor>(
|
||||||
|
|
Loading…
Reference in New Issue