diff options
| author | Matt Kopec <Matt.Kopec@intel.com> | 2013-03-14 21:35:26 +0000 |
|---|---|---|
| committer | Matt Kopec <Matt.Kopec@intel.com> | 2013-03-14 21:35:26 +0000 |
| commit | 9eb40a97f7152eb17469b407ea55723ce2c254a9 (patch) | |
| tree | 68facc11a32e766c4b6dc2a0971dbdb4d3bb60da | |
| parent | 9b55e31bcb1211ae22f477e69bf8335568924b9b (diff) | |
| download | bcm5719-llvm-9eb40a97f7152eb17469b407ea55723ce2c254a9.tar.gz bcm5719-llvm-9eb40a97f7152eb17469b407ea55723ce2c254a9.zip | |
Recommit lldb realtime output for POSIX.
-Adds workaround for assertion in lldb for TestEvents.py
llvm-svn: 177116
| -rw-r--r-- | lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp | 3 | ||||
| -rw-r--r-- | lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp | 24 | ||||
| -rw-r--r-- | lldb/source/Plugins/Process/POSIX/ProcessPOSIX.h | 6 |
3 files changed, 4 insertions, 29 deletions
diff --git a/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp b/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp index 872dffe098c..6528b7e7f25 100644 --- a/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp +++ b/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp @@ -1571,7 +1571,8 @@ ProcessMonitor::ServeOperation(OperationArgs *args) assert(errno == EINTR); goto READ_AGAIN; } - + if (status == 0) + continue; // Poll again. The connection probably terminated. assert(status == sizeof(op)); op->Execute(monitor); write(fdset.fd, &op, sizeof(op)); diff --git a/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp b/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp index 417b941a50b..6f725f5c7e6 100644 --- a/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp +++ b/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp @@ -206,6 +206,8 @@ ProcessPOSIX::DoLaunch (Module *module, if (!error.Success()) return error; + SetSTDIOFileDescriptor(m_monitor->GetTerminalFD()); + SetID(m_monitor->GetPID()); return error; } @@ -277,7 +279,6 @@ ProcessPOSIX::DoHalt(bool &caused_stop) { caused_stop = true; } - return error; } @@ -584,27 +585,6 @@ 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 068686df99f..b16da3aca74 100644 --- a/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.h +++ b/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.h @@ -124,12 +124,6 @@ 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. |

