Re: [PATCH] Allow remote debugging over a local domain socket

John Darrington
2018-08-31T15:10:48Z

On Fri, Aug 31, 2018 at 05:58:47PM +0300, Eli Zaretskii wrote:

> +int
> +socket_read_prim (struct serial *scb, size_t count)
> +{
> + /* Need to cast to silence -Wpointer-sign on MinGW, as Winsock's
> + 'recv' takes 'char *' as second argument, while 'scb->buf' is
> + 'unsigned char *'. */
> + return recv (scb->fd, (char *) scb->buf, count, 0);
> +}
> +
> +int
> +socket_write_prim (struct serial *scb, const void *buf, size_t count)
> +{
> + /* On Windows, the second parameter to send is a "const char *"; on
> + UNIX systems it is generally "const void *". The cast to "const
> + char *" is OK everywhere, since in C++ any data pointer type can
> + be implicitly converted to "const void *". */
> + return send (scb->fd, (const char *) buf, count, 0);
> +}

I'm confused: why does this mention MinGW and Windows, when Windows
doesn't support AF_UNIX (AFAIK)? Should this stuff even be compiled
on Windows?

> +#ifdef USE_WIN32API
> + /* Do nothing; Windoze does not have local domain sockets. */

Exactly!

> - ops = serial_interface_lookup ("hardwire");
> + {
> + /* Check to see if name is a socket. If it is, then treat is
> + as such. Otherwise assume that it's a character device. */
> + struct stat sb;
> + if (0 == stat (name, &sb) && ((sb.st_mode & S_IFMT) == S_IFSOCK))

AFAIK, S_IFSOCK is not defined in the MinGW headers, so we need some
replacement definition, or we need to ifdef this away in the Windows
build.

I am told, that the recent versions of Windows 10 do indeed have local
domain sockets. But if you like, I can conditionally include the file
in the SER_HARDWIRE variable. Then the whole issue is moot.

J'

--
Avoid eavesdropping. Send strong encrypted email.
PGP Public key ID: 1024D/2DE827B3
fingerprint = 8797 A26D 0854 2EAB 0285 A290 8A67 719C 2DE8 27B3
See http://sks-keyservers.net or any PGP keyserver for public key.