[Lldb-commits] [lldb] [lldb] Removed gdbserver ports map from lldb-server (PR #104238)
Pavel Labath via lldb-commits
lldb-commits at lists.llvm.org
Fri Aug 16 01:40:31 PDT 2024
================
@@ -47,111 +48,10 @@ using namespace llvm;
// option descriptors for getopt_long_only()
-#ifdef _WIN32
-typedef pipe_t shared_fd_t;
-const shared_fd_t kInvalidSharedFD = LLDB_INVALID_PIPE;
-#else
-typedef NativeSocket shared_fd_t;
-const shared_fd_t kInvalidSharedFD = Socket::kInvalidSocketValue;
-#endif
-
-class SharedSocket {
-public:
- SharedSocket(Connection *conn, Status &error) {
- m_fd = kInvalidSharedFD;
-
- const Socket *socket =
- static_cast<const Socket *>(conn->GetReadObject().get());
- if (socket == nullptr) {
- error = Status("invalid conn socket");
- return;
- }
-
-#ifdef _WIN32
- m_socket = socket->GetNativeSocket();
-
- // Create a pipe to transfer WSAPROTOCOL_INFO to the child process.
- error = m_socket_pipe.CreateNew(true);
- if (error.Fail())
- return;
-
- m_fd = m_socket_pipe.GetReadPipe();
-#else
- m_fd = socket->GetNativeSocket();
- error = Status();
-#endif
- }
-
- shared_fd_t GetSendableFD() { return m_fd; }
-
- Status CompleteSending(lldb::pid_t child_pid) {
-#ifdef _WIN32
- // Transfer WSAPROTOCOL_INFO to the child process.
- m_socket_pipe.CloseReadFileDescriptor();
-
- WSAPROTOCOL_INFO protocol_info;
- if (::WSADuplicateSocket(m_socket, child_pid, &protocol_info) ==
- SOCKET_ERROR) {
- int last_error = ::WSAGetLastError();
- return Status("WSADuplicateSocket() failed, error: %d", last_error);
- }
-
- size_t num_bytes;
- Status error =
- m_socket_pipe.WriteWithTimeout(&protocol_info, sizeof(protocol_info),
- std::chrono::seconds(10), num_bytes);
- if (error.Fail())
- return error;
- if (num_bytes != sizeof(protocol_info))
- return Status("WriteWithTimeout(WSAPROTOCOL_INFO) failed: %d bytes",
- num_bytes);
-#endif
- return Status();
- }
-
- static Status GetNativeSocket(shared_fd_t fd, NativeSocket &socket) {
-#ifdef _WIN32
- socket = Socket::kInvalidSocketValue;
- // Read WSAPROTOCOL_INFO from the parent process and create NativeSocket.
- WSAPROTOCOL_INFO protocol_info;
- {
- Pipe socket_pipe(fd, LLDB_INVALID_PIPE);
- size_t num_bytes;
- Status error =
- socket_pipe.ReadWithTimeout(&protocol_info, sizeof(protocol_info),
- std::chrono::seconds(10), num_bytes);
- if (error.Fail())
- return error;
- if (num_bytes != sizeof(protocol_info)) {
- return Status(
- "socket_pipe.ReadWithTimeout(WSAPROTOCOL_INFO) failed: % d bytes",
- num_bytes);
- }
- }
- socket = ::WSASocket(FROM_PROTOCOL_INFO, FROM_PROTOCOL_INFO,
- FROM_PROTOCOL_INFO, &protocol_info, 0, 0);
- if (socket == INVALID_SOCKET) {
- return Status("WSASocket(FROM_PROTOCOL_INFO) failed: error %d",
- ::WSAGetLastError());
- }
- return Status();
-#else
- socket = fd;
- return Status();
-#endif
- }
-
-private:
-#ifdef _WIN32
- Pipe m_socket_pipe;
- NativeSocket m_socket;
-#endif
- shared_fd_t m_fd;
-};
-
static int g_debug = 0;
static int g_verbose = 0;
static int g_server = 0;
+static volatile bool g_listen_gdb = true;
----------------
labath wrote:
yeah, but volatile still isn't the right choice for that. It would have to be an atomic var.
https://github.com/llvm/llvm-project/pull/104238
More information about the lldb-commits
mailing list