Hi Bruno, Thanks for poll the fixes. I would like to propose attached patch to fix on mingw-w64 for x86_64 still present problem:
poll.c: In function 'poll': poll.c:526:39: warning: passing argument 5 of 'select' from incompatible pointer type [-Wincompatible-pointer-types] 526 | if (select (0, &rfds, &wfds, &xfds, &tv0) > 0) | ^~~~ | | | struct rpl_timeval * In file included from ./poll.h:41, from poll.c:32: C:/Users/hm/Documents/msys32/mingw64/x86_64-w64- mingw32/include/winsock2.h:995:116: note: expected 'PTIMEVAL' {aka 'struct timeval * const'} but argument is of type 'struct rpl_timeval *' 995 | WINSOCK_API_LINKAGE int WSAAPI select(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,const PTIMEVAL timeout); | ~~~~~~~~~~~~~~~^~~~~~~ poll.c:562:37: warning: passing argument 5 of 'select' from incompatible pointer type [-Wincompatible-pointer-types] 562 | select (0, &rfds, &wfds, &xfds, &tv0); | ^~~~ | | | struct rpl_timeval * In file included from ./poll.h:41, from poll.c:32: C:/Users/hm/Documents/msys32/mingw64/x86_64-w64- mingw32/include/winsock2.h:995:116: note: expected 'PTIMEVAL' {aka 'struct timeval * const'} but argument is of type 'struct rpl_timeval *' 995 | WINSOCK_API_LINKAGE int WSAAPI select(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,const PTIMEVAL timeout); | ~~~~~~~~~~~~~~~^~~~~~ It turns out in sys_time.in.h: i686: @REPLACE_STRUCT_TIMEVAL@=0 x86_64: @REPLACE_STRUCT_TIMEVAL@=1 causing poll.c line 448 on x86_64 to become static struct rpl_timeval tv0; But poll.c in line 90 states: /* Here we need the select() function from Windows, because we pass bit masks of SOCKETs, not bit masks of FDs. */ So we need also the original timeval definiton from Windows at least for x86_64. Thanks for reviewing the patch. Best regards Hannes
From 3a46ec557f72d4c46adba8e8b39a6344bb911570 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hannes=20M=C3=BCller?= <h.c.f.muel...@gmx.de> Date: Mon, 1 Jul 2019 16:59:45 +0200 Subject: [PATCH] Fix warning for timeval in poll.c on mingw-w64 for x86_64 * lib/poll.c: call windows native select() with windows native timeval --- lib/poll.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/poll.c b/lib/poll.c index 5d9150c13..330144950 100644 --- a/lib/poll.c +++ b/lib/poll.c @@ -91,6 +91,10 @@ of SOCKETs, not bit masks of FDs. */ # undef select +/* Here we need timeval from Windows since this is what select() function + from Windows requires */ +# undef timeval + /* Avoid warnings from gcc -Wcast-function-type. */ # define GetProcAddress \ (void *) GetProcAddress -- 2.22.0