summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Kopec <Matt.Kopec@intel.com>2013-03-14 21:35:26 +0000
committerMatt Kopec <Matt.Kopec@intel.com>2013-03-14 21:35:26 +0000
commit9eb40a97f7152eb17469b407ea55723ce2c254a9 (patch)
tree68facc11a32e766c4b6dc2a0971dbdb4d3bb60da
parent9b55e31bcb1211ae22f477e69bf8335568924b9b (diff)
downloadbcm5719-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.cpp3
-rw-r--r--lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp24
-rw-r--r--lldb/source/Plugins/Process/POSIX/ProcessPOSIX.h6
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.
OpenPOWER on IntegriCloud