Declare 'ioarg' (from ser-tcp.c:try_connect) as 'u_long' when on Windows (and unbreak...
authorSergio Durigan Junior <sergiodj@redhat.com>
Thu, 12 Jul 2018 17:03:31 +0000 (13:03 -0400)
committerSergio Durigan Junior <sergiodj@redhat.com>
Thu, 12 Jul 2018 17:03:31 +0000 (13:03 -0400)
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.

gdb/ChangeLog
gdb/ser-tcp.c

index 933a04e7fa0a877635d70578f22e1cc095b49d54..1a37862570a985b8cef66d780ddf0811516d9436 100644 (file)
@@ -1,3 +1,8 @@
+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>
index 8f165bcf0b1c3a119070f381e2b8ba13c82ddbe1..618d2d931ac6347a82d498735d65e5e18a8f6d03 100644 (file)
@@ -171,7 +171,11 @@ try_connect (const struct addrinfo *ainfo, unsigned int *polls)
     return -1;
 
   /* Set socket nonblocking.  */
+#ifdef USE_WIN32API
+  u_long ioarg = 1;
+#else
   int ioarg = 1;
+#endif
 
   ioctl (sock, FIONBIO, &ioarg);