summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/POSIX
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Plugins/Process/POSIX')
-rw-r--r--lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp24
-rw-r--r--lldb/source/Plugins/Process/POSIX/ProcessPOSIX.h6
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.
OpenPOWER on IntegriCloud