Index: lldb/source/Host/common/Socket.cpp =================================================================== --- lldb/source/Host/common/Socket.cpp +++ lldb/source/Host/common/Socket.cpp @@ -18,6 +18,7 @@ #include "lldb/Utility/RegularExpression.h" #include "llvm/ADT/STLExtras.h" +#include "llvm/Support/Errno.h" #ifndef LLDB_DISABLE_POSIX #include "lldb/Host/posix/DomainSocket.h" @@ -450,9 +451,11 @@ if (!child_processes_inherit) { flags |= SOCK_CLOEXEC; } - NativeSocket fd = ::accept4(sockfd, addr, addrlen, flags); + NativeSocket fd = llvm::sys::RetryAfterSignal(-1, ::accept4, + sockfd, addr, addrlen, flags); #else - NativeSocket fd = ::accept(sockfd, addr, addrlen); + NativeSocket fd = llvm::sys::RetryAfterSignal(-1, ::accept, + sockfd, addr, addrlen); #endif if (fd == kInvalidSocketValue) SetLastError(error); Index: lldb/source/Host/common/TCPSocket.cpp =================================================================== --- lldb/source/Host/common/TCPSocket.cpp +++ lldb/source/Host/common/TCPSocket.cpp @@ -17,6 +17,7 @@ #include "lldb/Utility/Log.h" #include "llvm/Config/llvm-config.h" +#include "llvm/Support/Errno.h" #include "llvm/Support/raw_ostream.h" #ifndef LLDB_DISABLE_POSIX @@ -150,8 +151,8 @@ address.SetPort(port); - if (-1 == ::connect(GetNativeSocket(), &address.sockaddr(), - address.GetLength())) { + if (-1 == llvm::sys::RetryAfterSignal(-1, ::connect, + GetNativeSocket(), &address.sockaddr(), address.GetLength())) { CLOSE_SOCKET(GetNativeSocket()); continue; } Index: lldb/source/Host/posix/ConnectionFileDescriptorPosix.cpp =================================================================== --- lldb/source/Host/posix/ConnectionFileDescriptorPosix.cpp +++ lldb/source/Host/posix/ConnectionFileDescriptorPosix.cpp @@ -252,8 +252,10 @@ ::tcgetattr(fd, &options); // Set port speed to maximum - ::cfsetospeed(&options, B115200); - ::cfsetispeed(&options, B115200); + llvm::sys::RetryAfterSignal(-1, ::cfsetospeed, + &options, B115200); + llvm::sys::RetryAfterSignal(-1, ::cfsetispeed, + &options, B115200); // Raw input, disable echo and signals options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); Index: lldb/source/Host/posix/DomainSocket.cpp =================================================================== --- lldb/source/Host/posix/DomainSocket.cpp +++ lldb/source/Host/posix/DomainSocket.cpp @@ -8,6 +8,7 @@ #include "lldb/Host/posix/DomainSocket.h" +#include "llvm/Support/Errno.h" #include "llvm/Support/FileSystem.h" #include @@ -81,8 +82,8 @@ m_socket = CreateSocket(kDomain, kType, 0, m_child_processes_inherit, error); if (error.Fail()) return error; - if (::connect(GetNativeSocket(), (struct sockaddr *)&saddr_un, saddr_un_len) < - 0) + if (llvm::sys::RetryAfterSignal(-1, ::connect, GetNativeSocket(), + (struct sockaddr *)&saddr_un, saddr_un_len) < 0) SetLastError(error); return error; Index: lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp =================================================================== --- lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp +++ lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp @@ -21,6 +21,7 @@ #include "lldb/Utility/Stream.h" #include "llvm/Support/ConvertUTF.h" +#include "llvm/Support/Errno.h" #include @@ -39,7 +40,7 @@ void PythonObject::Dump(Stream &strm) const { if (m_py_obj) { - FILE *file = ::tmpfile(); + FILE *file = llvm::sys::RetryAfterSignal(nullptr, ::tmpfile); if (file) { ::PyObject_Print(m_py_obj, file, 0); const long length = ftell(file); @@ -47,7 +48,8 @@ ::rewind(file); std::vector file_contents(length, '\0'); const size_t length_read = - ::fread(file_contents.data(), 1, file_contents.size(), file); + llvm::sys::RetryAfterSignal(0, ::fread, + file_contents.data(), 1, file_contents.size(), file); if (length_read > 0) strm.Write(file_contents.data(), length_read); } Index: lldb/tools/darwin-debug/darwin-debug.cpp =================================================================== --- lldb/tools/darwin-debug/darwin-debug.cpp +++ lldb/tools/darwin-debug/darwin-debug.cpp @@ -39,6 +39,8 @@ #include +#include "llvm/Support/Errno.h" + #ifndef _POSIX_SPAWN_DISABLE_ASLR #define _POSIX_SPAWN_DISABLE_ASLR 0x0100 #endif @@ -287,7 +289,8 @@ saddr_un.sun_path[sizeof(saddr_un.sun_path) - 1] = '\0'; saddr_un.sun_len = SUN_LEN(&saddr_un); - if (::connect(s, (struct sockaddr *)&saddr_un, SUN_LEN(&saddr_un)) < 0) { + if (llvm::sys::RetryAfterSignal(-1, ::connect, s, + (struct sockaddr *)&saddr_un, SUN_LEN(&saddr_un)) < 0) { perror("error: connect (socket, &saddr_un, saddr_un_len)"); exit(1); } Index: lldb/tools/debugserver/source/RNBSocket.cpp =================================================================== --- lldb/tools/debugserver/source/RNBSocket.cpp +++ lldb/tools/debugserver/source/RNBSocket.cpp @@ -25,6 +25,7 @@ #include #include "lldb/Host/SocketAddress.h" +#include "llvm/Support/Errno.h" #ifdef WITH_LOCKDOWN #include "lockdown.h" @@ -169,7 +170,8 @@ lldb_private::SocketAddress &addr_in = socket_pair->second; lldb_private::SocketAddress accept_addr; socklen_t sa_len = accept_addr.GetMaxLength(); - m_fd = ::accept(sock_fd, &accept_addr.sockaddr(), &sa_len); + m_fd = llvm::sys::RetryAfterSignal(-1, ::accept, + sock_fd, &accept_addr.sockaddr(), &sa_len); if (m_fd == -1) { err.SetError(errno, DNBError::POSIX); @@ -230,7 +232,8 @@ address.SetPort(port); - if (-1 == ::connect(m_fd, &address.sockaddr(), address.GetLength())) { + if (-1 == llvm::sys::RetryAfterSignal(-1, ::connect, m_fd, + &address.sockaddr(), address.GetLength())) { Disconnect(false); continue; } Index: lldb/tools/debugserver/source/debugserver.cpp =================================================================== --- lldb/tools/debugserver/source/debugserver.cpp +++ lldb/tools/debugserver/source/debugserver.cpp @@ -681,8 +681,9 @@ saddr_un.sun_path[sizeof(saddr_un.sun_path) - 1] = '\0'; saddr_un.sun_len = SUN_LEN(&saddr_un); - if (::connect(s, (struct sockaddr *)&saddr_un, - static_cast(SUN_LEN(&saddr_un))) < 0) { + if (llvm::sys::RetryAfterSignal(-1, ::connect, s, + (struct sockaddr *)&saddr_un, + static_cast(SUN_LEN(&saddr_un))) < 0) { perror("error: connect (socket, &saddr_un, saddr_un_len)"); exit(1); } Index: lldb/tools/lldb-vscode/lldb-vscode.cpp =================================================================== --- lldb/tools/lldb-vscode/lldb-vscode.cpp +++ lldb/tools/lldb-vscode/lldb-vscode.cpp @@ -41,6 +41,7 @@ #include #include "llvm/ADT/ArrayRef.h" +#include "llvm/Support/Errno.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/raw_ostream.h" @@ -90,7 +91,8 @@ } else { listen(sockfd, 5); socklen_t clilen = sizeof(cli_addr); - newsockfd = accept(sockfd, (struct sockaddr *)&cli_addr, &clilen); + newsockfd = llvm::sys::RetryAfterSignal(-1, accept, + sockfd, (struct sockaddr *)&cli_addr, &clilen); if (newsockfd < 0) if (g_vsc.log) *g_vsc.log << "error: accept (" << strerror(errno) << ")"