From aa3e33575d2098d5ca435b98d5c7fc29de57cece Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Wed, 29 Aug 2018 20:37:55 +0200 Subject: [PATCH 1/7] Fixup Windows build after strerr changes --- lib/isc/include/isc/strerr.h | 4 ++-- lib/isc/string.c | 6 +++++- lib/isc/win32/errno2result.c | 1 + lib/isc/win32/include/isc/platform.h.in | 1 - lib/isc/win32/interfaceiter.c | 1 - lib/isc/win32/libisc.vcxproj.filters.in | 9 --------- lib/isc/win32/libisc.vcxproj.in | 3 --- lib/isc/win32/net.c | 2 +- lib/isc/win32/socket.c | 2 +- 9 files changed, 10 insertions(+), 19 deletions(-) diff --git a/lib/isc/include/isc/strerr.h b/lib/isc/include/isc/strerr.h index 40022ecd6d..e3e0304dab 100644 --- a/lib/isc/include/isc/strerr.h +++ b/lib/isc/include/isc/strerr.h @@ -17,7 +17,7 @@ #include -#if _GNU_SOURCE +#if defined(strerror_r) #undef strerror_r -#define strerror_r isc_string_strerror_r #endif +#define strerror_r isc_string_strerror_r diff --git a/lib/isc/string.c b/lib/isc/string.c index b1e42a0b57..46e5303166 100644 --- a/lib/isc/string.c +++ b/lib/isc/string.c @@ -44,8 +44,8 @@ #ifdef _GNU_SOURCE #undef _GNU_SOURCE -#include #endif +#include #include "isc/string.h" // IWYU pragma: keep @@ -109,5 +109,9 @@ isc_string_strlcat(char *dst, const char *src, size_t size) int isc_string_strerror_r(int errnum, char *buf, size_t buflen) { +#if defined(_WIN32) || defined(_WIN64) + return (strerror_s(buf, buflen, errnum)); +#else return (strerror_r(errnum, buf, buflen)); +#endif } diff --git a/lib/isc/win32/errno2result.c b/lib/isc/win32/errno2result.c index d24a1268b1..d09fc2b233 100644 --- a/lib/isc/win32/errno2result.c +++ b/lib/isc/win32/errno2result.c @@ -17,6 +17,7 @@ #include "errno2result.h" #include +#include #include #include diff --git a/lib/isc/win32/include/isc/platform.h.in b/lib/isc/win32/include/isc/platform.h.in index eea970e6a9..a0fc5c644a 100644 --- a/lib/isc/win32/include/isc/platform.h.in +++ b/lib/isc/win32/include/isc/platform.h.in @@ -28,7 +28,6 @@ #if defined(_WIN32) || defined(_WIN64) /* We are on Windows */ # define strtok_r strtok_s -# define strerror_r(errnum, buf, buflen) strerror_s(buf, buflen, errnum) #define ISC_STRERRORSIZE 128 diff --git a/lib/isc/win32/interfaceiter.c b/lib/isc/win32/interfaceiter.c index 3272c89ecf..da6d282b04 100644 --- a/lib/isc/win32/interfaceiter.c +++ b/lib/isc/win32/interfaceiter.c @@ -31,7 +31,6 @@ #include #include #include -#include #include #include diff --git a/lib/isc/win32/libisc.vcxproj.filters.in b/lib/isc/win32/libisc.vcxproj.filters.in index ff1c035ac2..bce90661fe 100644 --- a/lib/isc/win32/libisc.vcxproj.filters.in +++ b/lib/isc/win32/libisc.vcxproj.filters.in @@ -449,9 +449,6 @@ Win32 Source Files - - Win32 Source Files - Win32 Source Files @@ -538,12 +535,6 @@ Library Source Files - - Library Source Files - - - Library Source Files - Library Source Files diff --git a/lib/isc/win32/libisc.vcxproj.in b/lib/isc/win32/libisc.vcxproj.in index 376ab0cf0c..c32f5c8be7 100644 --- a/lib/isc/win32/libisc.vcxproj.in +++ b/lib/isc/win32/libisc.vcxproj.in @@ -437,8 +437,6 @@ copy InstallFiles ..\Build\Release\ - - @@ -497,7 +495,6 @@ copy InstallFiles ..\Build\Release\ - diff --git a/lib/isc/win32/net.c b/lib/isc/win32/net.c index 7328f8e54c..3ae2e4c3e6 100644 --- a/lib/isc/win32/net.c +++ b/lib/isc/win32/net.c @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include #include diff --git a/lib/isc/win32/socket.c b/lib/isc/win32/socket.c index ffcc0cc9e1..9add374881 100644 --- a/lib/isc/win32/socket.c +++ b/lib/isc/win32/socket.c @@ -62,7 +62,7 @@ #include #include #include -#include +#include #include #include #include From d967e107f629dc435352e14298c8cb178f276d7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Wed, 29 Aug 2018 21:09:35 +0200 Subject: [PATCH 2/7] Remove isc_net_pton and isc_net_ntop from Windows libisc.def.in --- lib/isc/win32/libisc.def.in | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/isc/win32/libisc.def.in b/lib/isc/win32/libisc.def.in index 9c05ba59c7..049f5066ca 100644 --- a/lib/isc/win32/libisc.def.in +++ b/lib/isc/win32/libisc.def.in @@ -433,14 +433,12 @@ isc_net_disableipv6 isc_net_enableipv4 isc_net_enableipv6 isc_net_getudpportrange -isc_net_ntop isc_net_probe_ipv6only isc_net_probe_ipv6pktinfo isc_net_probedscp isc_net_probeipv4 isc_net_probeipv6 isc_net_probeunix -isc_net_pton isc_netaddr_any isc_netaddr_any6 isc_netaddr_eqprefix From c74ee5bb174a488e4b9a9878484e3bef0ca0160f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Wed, 29 Aug 2018 21:36:27 +0200 Subject: [PATCH 3/7] Remove *_loadnew from libdns.def.in --- lib/dns/win32/libdns.def.in | 3 --- 1 file changed, 3 deletions(-) diff --git a/lib/dns/win32/libdns.def.in b/lib/dns/win32/libdns.def.in index 0784b0359f..e8ac6af323 100644 --- a/lib/dns/win32/libdns.def.in +++ b/lib/dns/win32/libdns.def.in @@ -1073,7 +1073,6 @@ dns_view_iscacheshared dns_view_isdelegationonly dns_view_issecuredomain dns_view_load -dns_view_loadnew dns_view_loadnta dns_view_ntacovers dns_view_restorekeyring @@ -1207,7 +1206,6 @@ dns_zone_keydone dns_zone_link dns_zone_load dns_zone_loadandthaw -dns_zone_loadnew dns_zone_log dns_zone_logc dns_zone_logv @@ -1346,7 +1344,6 @@ dns_zt_find dns_zt_flushanddetach dns_zt_freezezones dns_zt_load -dns_zt_loadnew dns_zt_mount dns_zt_setviewcommit dns_zt_setviewrevert From 7cba3cc474722854029d5d34ebe4006ba8d8b842 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Wed, 29 Aug 2018 21:44:34 +0200 Subject: [PATCH 4/7] Bump the minimum required Windows version to Windows Vista and Windows Server 2008 --- bin/win32/BINDInstall/StdAfx.h | 6 +++--- config.h.win32 | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/bin/win32/BINDInstall/StdAfx.h b/bin/win32/BINDInstall/StdAfx.h index 099ecb2c9e..7c5a272bc4 100644 --- a/bin/win32/BINDInstall/StdAfx.h +++ b/bin/win32/BINDInstall/StdAfx.h @@ -4,10 +4,10 @@ // /* - * Minimum version is Windows XP SP1 + * Minimum version is Windows Vista and Windows Server 2008 */ -#define _WIN32_WINNT 0x0501 -#define NTDDI_VERSION 0x05010100 +#define _WIN32_WINNT 0x0600 +#define NTDDI_VERSION 0x06000100 #ifndef _CRT_SECURE_NO_DEPRECATE #define _CRT_SECURE_NO_DEPRECATE 1 diff --git a/config.h.win32 b/config.h.win32 index 5ad82bc368..0595c543e1 100644 --- a/config.h.win32 +++ b/config.h.win32 @@ -43,19 +43,19 @@ #endif /* - * Minimum version is Windows XP + * Minimum version is Windows Vista and Windows Server 2008 */ #ifndef _WIN32_WINNT -#define _WIN32_WINNT 0x0501 +#define _WIN32_WINNT 0x0600 #endif -#if _WIN32_WINNT < 0x0501 -#error Minimum Target environment is Windows XP and Windows Server 2003 +#if _WIN32_WINNT < 0x0600 +#error Minimum Target environment is Windows Vista and Windows Server 2008 #endif #ifndef NTDDI_VERSION -#define NTDDI_VERSION 0x05010100 +#define NTDDI_VERSION 0x06000100 #endif -#if NTDDI_VERSION < 0x05010100 -#error Minimum Target environment is Windows XP SP1 and Windows Server 2003 +#if NTDDI_VERSION < 0x06000100 +#error Minimum Target environment is Windows Vista and Windows Server 2008 #endif /* Define if you have the ANSI C header files. */ From d67b07c1154881186fcbd04479f554eab85573a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Wed, 29 Aug 2018 21:58:15 +0200 Subject: [PATCH 5/7] gai_strerror on Windows is just 'char *' --- lib/irs/gai_strerror.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/irs/gai_strerror.c b/lib/irs/gai_strerror.c index 144ed66ece..b922fa1019 100644 --- a/lib/irs/gai_strerror.c +++ b/lib/irs/gai_strerror.c @@ -73,7 +73,11 @@ static const char *gai_messages[] = { * Returns an error message corresponding to an error code returned by * getaddrinfo() and getnameinfo() */ +#if defined _WIN32 +char * +#else const char * +#endif gai_strerror(int ecode) { union { const char *const_ptr; From 7f508ec229b8e391ad277b143392e70d2b52a79b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Wed, 29 Aug 2018 22:16:37 +0200 Subject: [PATCH 6/7] Link arpaname and mdig with ws2_32.lib --- bin/tools/win32/arpaname.vcxproj.in | 2 +- bin/tools/win32/mdig.vcxproj.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/tools/win32/arpaname.vcxproj.in b/bin/tools/win32/arpaname.vcxproj.in index 585adb0d59..143c29288a 100644 --- a/bin/tools/win32/arpaname.vcxproj.in +++ b/bin/tools/win32/arpaname.vcxproj.in @@ -68,7 +68,7 @@ true ..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt) ..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories) - @OPENSSL_LIB@libisc.lib;%(AdditionalDependencies) + @OPENSSL_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies) diff --git a/bin/tools/win32/mdig.vcxproj.in b/bin/tools/win32/mdig.vcxproj.in index af0413a2c7..3c745d28e8 100644 --- a/bin/tools/win32/mdig.vcxproj.in +++ b/bin/tools/win32/mdig.vcxproj.in @@ -68,7 +68,7 @@ true ..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt) ..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);%(AdditionalLibraryDirectories) - @OPENSSL_LIB@libisc.lib;libdns.lib;libbind9.lib;%(AdditionalDependencies) + @OPENSSL_LIB@libisc.lib;libdns.lib;libbind9.lib;ws2_32.lib;%(AdditionalDependencies) From e582d085de05151c41562d2c077ce05ca309af90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Wed, 29 Aug 2018 22:23:46 +0200 Subject: [PATCH 7/7] Fix InterlockedCompareExchange64Acquire -> InterlockedCompareExchangeAcquire64 and variants --- lib/isc/win32/include/isc/stdatomic.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/isc/win32/include/isc/stdatomic.h b/lib/isc/win32/include/isc/stdatomic.h index 4eeb10f88e..69f01ba275 100644 --- a/lib/isc/win32/include/isc/stdatomic.h +++ b/lib/isc/win32/include/isc/stdatomic.h @@ -205,13 +205,13 @@ atomic_compare_exchange_strong_explicit64(atomic_int_fast64_t *obj, REQUIRE(succ == fail); switch (succ) { case memory_order_relaxed: - __v = InterlockedCompareExchange64NoFence((atomic_int_fast64_t *)obj, desired, *expected); + __v = InterlockedCompareExchangeNoFence64((atomic_int_fast64_t *)obj, desired, *expected); break; case memory_order_acquire: - __v = InterlockedCompareExchange64Acquire((atomic_int_fast64_t *)obj, desired, *expected); + __v = InterlockedCompareExchangeAcquire64((atomic_int_fast64_t *)obj, desired, *expected); break; case memory_order_release: - __v = InterlockedCompareExchange64Release((atomic_int_fast64_t *)obj, desired, *expected); + __v = InterlockedCompareExchangeRelease64((atomic_int_fast64_t *)obj, desired, *expected); break; default: __v = InterlockedCompareExchange64((atomic_int_fast64_t *)obj, desired, *expected);