When building GDB on mingw32, it fails with:
../../binutils-gdb/gdb/ser-tcp.c: In function 'int try_connect(const addrinfo*, unsigned int*)':
../../binutils-gdb/gdb/ser-tcp.c:176:25: error: invalid conversion from 'int*' to 'u_long* {aka long unsigned int*}' [-fpermissive]
ioctl (sock, FIONBIO, &ioarg);
^~~~~~
In file included from ../../binutils-gdb/gdb/serial.h:23:0,
from ../../binutils-gdb/gdb/ser-tcp.c:21:
/usr/x86_64-w64-mingw32/sys-root/mingw/include/winsock2.h:977:34: note: initializing argument 3 of 'int ioctlsocket(SOCKET, long int, u_long*)'
WINSOCK_API_LINKAGE int WSAAPI ioctlsocket(SOCKET s,__LONG32 cmd,u_long *argp);
^~~~~~~~~~~
make[2]: *** [Makefile:1610: ser-tcp.o] Error 1
The problem happens because the IPv6
commit (
c7ab0aef11d91b637bf091aa9176b8dc4aadee46) wrongly removed the
code responsible for declaring 'ioarg' with a different type if
building for Windows. This patch restores that.
gdb/ChangeLog:
2018-07-12 Sergio Durigan Junior <sergiodj@redhat.com>
* ser-tcp.c (try_connect): Declare 'ioarg' as 'u_long' if building
on Windows.
+2018-07-12 Sergio Durigan Junior <sergiodj@redhat.com>
+
+ * ser-tcp.c (try_connect): Declare 'ioarg' as 'u_long' if building
+ on Windows.
+
2018-07-11 Sergio Durigan Junior <sergiodj@redhat.com>
Jan Kratochvil <jan.kratochvil@redhat.com>
Paul Fertser <fercerpav@gmail.com>
return -1;
/* Set socket nonblocking. */
+#ifdef USE_WIN32API
+ u_long ioarg = 1;
+#else
int ioarg = 1;
+#endif
ioctl (sock, FIONBIO, &ioarg);