Don't unnecessarily redefine 'socklen_t' type in MinGW builds.
authorEli Zaretskii <eliz@gnu.org>
Sun, 26 Jul 2020 16:35:48 +0000 (19:35 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sun, 26 Jul 2020 16:35:48 +0000 (19:35 +0300)
The original configure-time tests in gdb/ and gdbserver/ failed to
detect that 'socklen_t' is defined in MinGW headers because the test
program included only sys/socket.h, which is absent in MinGW system
headers.  However on MS-Windows this data type is declared in another
header, ws2tcpip.h.  The modified test programs try using ws2tcpip.h
if sys/socket.h is unavailable.

Thanks to Joel Brobecker who helped me regenerate the configure
scripts and the config.in files.

gdb/ChangeLog:
2020-07-26  Eli Zaretskii  <eliz@gnu.org>

* configure.ac (AC_CHECK_HEADERS): Check for sys/socket.h and
ws2tcpip.h.  When checking whether socklen_t type is defined, use
ws2tcpip.h if it is available and sys/socket.h isn't.
* configure: Regenerate.
* config.in: Regenerate.

gdbserver/ChangeLog:
2020-07-26  Eli Zaretskii  <eliz@gnu.org>

* configure.ac (AC_CHECK_HEADERS): Add ws2tcpip.h.
When checking whether socklen_t type is defined, use ws2tcpip.h if
it is available and sys/socket.h isn't.
* configure: Regenerate.
* config.in: Regenerate.

gdb/ChangeLog
gdb/config.in
gdb/configure
gdb/configure.ac
gdbserver/ChangeLog
gdbserver/config.in
gdbserver/configure
gdbserver/configure.ac

index 0c2c6552d95270224c0c6523b6b3ba66d1a7650e..c8af86bfcaa741820ff28760f7302cf0269098b4 100644 (file)
@@ -1,3 +1,11 @@
+2020-07-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * configure.ac (AC_CHECK_HEADERS): Check for sys/socket.h and
+       ws2tcpip.h.  When checking whether socklen_t type is defined, use
+       ws2tcpip.h if it is available and sys/socket.h isn't.
+       * configure: Regenerate.
+       * config.in: Regenerate.
+
 2020-07-25  Andrew Burgess  <andrew.burgess@embecosm.com>
 
        PR fortran/23051
index 340c421ca031d927a7784252ea717f68d3dd5261..26053475db92729e48525d12497eea994bc86de5 100644 (file)
 /* Define to 1 if you have the <sys/select.h> header file. */
 #undef HAVE_SYS_SELECT_H
 
+/* Define to 1 if you have the <sys/sockets.h> header file. */
+#undef HAVE_SYS_SOCKETS_H
+
 /* Define to 1 if you have the <sys/socket.h> header file. */
 #undef HAVE_SYS_SOCKET_H
 
 /* Define to 1 if you have the `wresize' function. */
 #undef HAVE_WRESIZE
 
+/* Define to 1 if you have the <ws2tcpip.h> header file. */
+#undef HAVE_WS2TCPIP_H
+
 /* Define to 1 if you have the `XML_StopParser' function. */
 #undef HAVE_XML_STOPPARSER
 
index 06b11e22521ba369e00651bd34124dc22044afce..c9a4b42ea12c744043a22b521377e5b7cf871bbd 100755 (executable)
 done
 
 
+for ac_header in sys/sockets.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "sys/sockets.h" "ac_cv_header_sys_sockets_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_sockets_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_SOCKETS_H 1
+_ACEOF
+
+fi
+
+done
+
+for ac_header in ws2tcpip.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "ws2tcpip.h" "ac_cv_header_ws2tcpip_h" "$ac_includes_default"
+if test "x$ac_cv_header_ws2tcpip_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_WS2TCPIP_H 1
+_ACEOF
+
+fi
+
+done
+
+
 # ------------------------- #
 # Checks for declarations.  #
 # ------------------------- #
@@ -12059,7 +12084,11 @@ $as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h
 # ------------------ #
 
 ac_fn_c_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" "#include <sys/types.h>
-#include <sys/socket.h>
+#if HAVE_SYS_SOCKET_H
+# include <sys/socket.h>
+#elif HAVE_WS2TCPIP_H
+# include <ws2tcpip.h>
+#endif
 
 "
 if test "x$ac_cv_type_socklen_t" = xyes; then :
index f9461b21507fe9fde4774f98eba3352bcf44fd3f..3bec21560e75e43d3106f035df0dfd3f191c8ec9 100644 (file)
@@ -1248,6 +1248,9 @@ AC_CHECK_HEADERS(term.h, [], [],
 #endif
 ])
 
+AC_CHECK_HEADERS([sys/sockets.h])
+AC_CHECK_HEADERS([ws2tcpip.h])
+
 # ------------------------- #
 # Checks for declarations.  #
 # ------------------------- #
@@ -1263,7 +1266,11 @@ AM_LC_MESSAGES
 
 AC_CHECK_TYPES(socklen_t, [], [],
 [#include <sys/types.h>
-#include <sys/socket.h>
+#if HAVE_SYS_SOCKET_H
+# include <sys/socket.h>
+#elif HAVE_WS2TCPIP_H
+# include <ws2tcpip.h>
+#endif
 ])
 
 # ------------------------------------- #
index f42b5c753a3b7686c5f166f4f6e820ed6d713d15..ee80fce4c1f486e5cc0c68934aff713550d47f5e 100644 (file)
@@ -1,3 +1,11 @@
+2020-07-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * configure.ac (AC_CHECK_HEADERS): Add ws2tcpip.h.
+       When checking whether socklen_t type is defined, use ws2tcpip.h if
+       it is available and sys/socket.h isn't.
+       * configure: Regenerate.
+       * config.in: Regenerate.
+
 2020-07-22  Pedro Alves  <pedro@palves.net>
 
        * inferiors.cc (switch_to_process): New, moved here from
index 07213aa52739ff0f8fdf1b66e70f815128329f82..c2ac4fea7e800ec01c351a5832a3f468a963c196 100644 (file)
 /* Define to 1 if `vfork' works. */
 #undef HAVE_WORKING_VFORK
 
+/* Define to 1 if you have the <ws2tcpip.h> header file. */
+#undef HAVE_WS2TCPIP_H
+
 /* Define to the address where bug reports for this package should be sent. */
 #undef PACKAGE_BUGREPORT
 
index 0f77ac6cb8dd3144990f32c679cf7c68c4f0307b..1f9c3f8ef49e91d02504d4aa89d26660f0f59456 100755 (executable)
@@ -9148,7 +9148,7 @@ else CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
 fi
 
 
-for ac_header in termios.h sys/reg.h string.h           sys/procfs.h linux/elf.h                fcntl.h signal.h sys/file.h             sys/ioctl.h netinet/in.h sys/socket.h netdb.h           netinet/tcp.h arpa/inet.h
+for ac_header in termios.h sys/reg.h string.h           sys/procfs.h linux/elf.h                fcntl.h signal.h sys/file.h             sys/ioctl.h netinet/in.h sys/socket.h netdb.h           netinet/tcp.h arpa/inet.h ws2tcpip.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
@@ -10044,7 +10044,11 @@ _ACEOF
 
 
 ac_fn_c_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" "#include <sys/types.h>
-#include <sys/socket.h>
+#if HAVE_SYS_SOCKET_H
+# include <sys/socket.h>
+#elif HAVE_WS2TCPIP_H
+# include <ws2tcpip.h>
+#endif
 
 "
 if test "x$ac_cv_type_socklen_t" = xyes; then :
index 10f2f4c0cb07a3ca2db153eea13bf8c34bebce30..4c7e392bbcedfb0b8bb116725b0f438c3d681030 100644 (file)
@@ -75,7 +75,7 @@ AC_CHECK_HEADERS(termios.h sys/reg.h string.h dnl
                 sys/procfs.h linux/elf.h dnl
                 fcntl.h signal.h sys/file.h dnl
                 sys/ioctl.h netinet/in.h sys/socket.h netdb.h dnl
-                netinet/tcp.h arpa/inet.h)
+                netinet/tcp.h arpa/inet.h ws2tcpip.h)
 AC_FUNC_FORK
 AC_CHECK_FUNCS(pread pwrite pread64)
 
@@ -147,7 +147,11 @@ AC_CHECK_DECLS([perror, vasprintf, vsnprintf])
 
 AC_CHECK_TYPES(socklen_t, [], [],
 [#include <sys/types.h>
-#include <sys/socket.h>
+#if HAVE_SYS_SOCKET_H
+# include <sys/socket.h>
+#elif HAVE_WS2TCPIP_H
+# include <ws2tcpip.h>
+#endif
 ])
 
 case "${target}" in