diff options
| author | Oleksiy Vyalov <ovyalov@google.com> | 2015-10-22 17:50:33 +0000 |
|---|---|---|
| committer | Oleksiy Vyalov <ovyalov@google.com> | 2015-10-22 17:50:33 +0000 |
| commit | 179c51e006dfe9609ecbd3753f7d19195a5a96f6 (patch) | |
| tree | 5af11d459669367c4968b278bc47b20e11cfb426 /lldb/source/Host/common | |
| parent | 35ae68001852d0eb7553bf5c40d5959744cc673e (diff) | |
| download | bcm5719-llvm-179c51e006dfe9609ecbd3753f7d19195a5a96f6.tar.gz bcm5719-llvm-179c51e006dfe9609ecbd3753f7d19195a5a96f6.zip | |
Add support for abstract domain sockets.
http://reviews.llvm.org/D13970
llvm-svn: 251034
Diffstat (limited to 'lldb/source/Host/common')
| -rw-r--r-- | lldb/source/Host/common/Socket.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/lldb/source/Host/common/Socket.cpp b/lldb/source/Host/common/Socket.cpp index b080e38f9c8..3cabcf6a543 100644 --- a/lldb/source/Host/common/Socket.cpp +++ b/lldb/source/Host/common/Socket.cpp @@ -30,6 +30,10 @@ #include <sys/un.h> #endif +#ifdef __linux__ +#include "lldb/Host/linux/AbstractSocket.h" +#endif + #ifdef __ANDROID_NDK__ #include <linux/tcp.h> #include <bits/error_constants.h> @@ -190,6 +194,44 @@ Error Socket::UnixDomainAccept(llvm::StringRef name, bool child_processes_inheri return error; } +Error +Socket::UnixAbstractConnect(llvm::StringRef name, bool child_processes_inherit, Socket *&socket) +{ + Error error; +#ifdef __linux__ + std::unique_ptr<Socket> connect_socket(new AbstractSocket(child_processes_inherit, error)); + if (error.Fail()) + return error; + + error = connect_socket->Connect(name); + if (error.Success()) + socket = connect_socket.release(); +#else + error.SetErrorString("Abstract domain sockets are not supported on this platform."); +#endif + return error; +} + +Error +Socket::UnixAbstractAccept(llvm::StringRef name, bool child_processes_inherit, Socket *&socket) +{ + Error error; +#ifdef __linux__ + std::unique_ptr<Socket> listen_socket(new AbstractSocket(child_processes_inherit, error)); + if (error.Fail()) + return error; + + error = listen_socket->Listen(name, 5); + if (error.Fail()) + return error; + + error = listen_socket->Accept(name, child_processes_inherit, socket); +#else + error.SetErrorString("Abstract domain sockets are not supported on this platform."); +#endif + return error; +} + bool Socket::DecodeHostAndPort(llvm::StringRef host_and_port, std::string &host_str, |

