From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 95236 invoked by alias); 10 Mar 2016 00:05:00 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 95210 invoked by uid 89); 10 Mar 2016 00:04:59 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.1 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 spammy=sockets, TCP, wit, unh X-HELO: mail-pf0-f175.google.com Received: from mail-pf0-f175.google.com (HELO mail-pf0-f175.google.com) (209.85.192.175) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Thu, 10 Mar 2016 00:04:58 +0000 Received: by mail-pf0-f175.google.com with SMTP id u190so24157261pfb.3 for ; Wed, 09 Mar 2016 16:04:57 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to; bh=gVakY9Ow8cV40uFwSRWg+EaB/JwY9xnLrJgM3ljgJ7M=; b=XYC9tss24y/4QmYfZkvX1Ch1cLCgCQdRWIubq1/zYsBkfMk/csm7wzBjfNYoxs16qS Lf/MFxzEsMdmCcaWaNDyyQHtYrDhz9cE94Kv8zmZgeNLanRxhwF3dLxe0ww1xOZscMlc kCyCS2tTi8CL3e6HVPiaqE7QotHmOcv2OAde8WbRHhArwnKpfUCWMIIaaDPMNymkxWZL KP23rcDkhLuMggBqTvhur2ss2rbPDSQJZhYOno8gYs8D8tuPpeSY76fGnN6d60y36Uxb 9ac//QwmGTE9LDkHgv9TEpr4sd6tQ/CRr/ZrqP5ZibmI9DmFvx8pj78p/+kt/+pbjwCj 1/rw== X-Gm-Message-State: AD7BkJIF9nnaEGpcTBKLvfjaoMbi/ZoojykZ2ztkWDNHuuirwI3il7sOPNiwDg90NgCNsLhfcQhx2tIjk8uKtP0/ MIME-Version: 1.0 X-Received: by 10.98.7.5 with SMTP id b5mr698111pfd.47.1457568296336; Wed, 09 Mar 2016 16:04:56 -0800 (PST) Received: by 10.66.164.129 with HTTP; Wed, 9 Mar 2016 16:04:56 -0800 (PST) Date: Thu, 10 Mar 2016 00:05:00 -0000 Message-ID: Subject: [PATCH] gdbserver: support Unix domain sockets From: Yunlian Jiang To: gdb-patches@sourceware.org Content-Type: text/plain; charset=UTF-8 X-IsSubscribed: yes X-SW-Source: 2016-03/txt/msg00160.txt.bz2 This patch enables gdbserver to use Unix domain sockets if the TCP sockets is not allowed to use. Wit this patch, user can use "gdbserver +debug-socket --attach 123" to use Unix domain sockets. diff --git a/gdb/gdbserver/remote-utils.c b/gdb/gdbserver/remote-utils.c index e751473..b00960d 100644 --- a/gdb/gdbserver/remote-utils.c +++ b/gdb/gdbserver/remote-utils.c @@ -62,6 +62,10 @@ #include #endif +#ifndef USE_WIN32API +#include +#endif + #if __QNX__ #include #endif /* __QNX__ */ @@ -288,6 +292,49 @@ remote_open (char *name) { char *port_str; + /* Enable gdbserver to use Unix domain sockets if applications aren't + allowed to bind to localhost TCP sockets. + Typical usage is "gdbserver +debug-socket --attach 123" */ + if (name[0] == '+') + { +#ifdef USE_WIN32API + error ("Only : is supported on this platform."); +#else + struct sockaddr_un sockaddr; + socklen_t sockaddrlen; + + listen_desc = socket (AF_UNIX, SOCK_STREAM, 0); + if (listen_desc == -1) + perror_with_name ("Can't create Unix domain socket"); + + /* Skip the initial '+'. */ + name++; + + memset (&sockaddr, 0, sizeof sockaddr); + sockaddr.sun_family = AF_UNIX; + snprintf(sockaddr.sun_path, sizeof (sockaddr.sun_path), "%s", name); + sockaddrlen = sizeof (sockaddr.sun_family) + + strlen (sockaddr.sun_path) + 1; + + unlink (sockaddr.sun_path); + + if (bind (listen_desc, (struct sockaddr *) &sockaddr, sockaddrlen) + || listen (listen_desc, 1)) + perror_with_name ("Can't bind Unix domain socket"); + + fprintf (stderr, "Listening on Unix domain socket '%s'\n", + sockaddr.sun_path); + fflush (stderr); + + /* Register the event loop handler. */ + add_file_handler (listen_desc, handle_accept_event, NULL); + + transport_is_reliable = 1; +#endif + + return; + } + port_str = strchr (name, ':'); #ifdef USE_WIN32API if (port_str == NULL)