diff options
-rw-r--r-- | lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp | 24 | ||||
-rw-r--r-- | lldb/source/Plugins/Process/POSIX/ProcessPOSIX.h | 6 |
2 files changed, 28 insertions, 2 deletions
diff --git a/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp b/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp index 6f725f5c7e6..417b941a50b 100644 --- a/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp +++ b/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp @@ -206,8 +206,6 @@ ProcessPOSIX::DoLaunch (Module *module, if (!error.Success()) return error; - SetSTDIOFileDescriptor(m_monitor->GetTerminalFD()); - SetID(m_monitor->GetPID()); return error; } @@ -279,6 +277,7 @@ ProcessPOSIX::DoHalt(bool &caused_stop) { caused_stop = true; } + return error; } @@ -585,6 +584,27 @@ ProcessPOSIX::PutSTDIN(const char *buf, size_t len, Error &error) return status; } +size_t +ProcessPOSIX::GetSTDOUT(char *buf, size_t len, Error &error) +{ + ssize_t bytes_read; + + // The terminal file descriptor is always in non-block mode. + if ((bytes_read = read(m_monitor->GetTerminalFD(), buf, len)) < 0) + { + if (errno != EAGAIN) + error.SetErrorToErrno(); + return 0; + } + return bytes_read; +} + +size_t +ProcessPOSIX::GetSTDERR(char *buf, size_t len, Error &error) +{ + return GetSTDOUT(buf, len, error); +} + UnixSignals & ProcessPOSIX::GetUnixSignals() { diff --git a/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.h b/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.h index b16da3aca74..068686df99f 100644 --- a/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.h +++ b/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.h @@ -124,6 +124,12 @@ public: virtual size_t PutSTDIN(const char *buf, size_t len, lldb_private::Error &error); + virtual size_t + GetSTDOUT(char *buf, size_t len, lldb_private::Error &error); + + virtual size_t + GetSTDERR(char *buf, size_t len, lldb_private::Error &error); + //-------------------------------------------------------------------------- // ProcessPOSIX internal API. |