From: Tom Tromey Date: Mon, 9 Jan 2023 14:43:29 +0000 (-0700) Subject: Set _WIN32_WINNT in common.m4 configure check X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2124b2de4bba05063218501dcccfc4cffe648cda;p=binutils-gdb.git Set _WIN32_WINNT in common.m4 configure check GCC recently added support for the Windows thread model, enabling libstdc++ to support Windows natively. However, this supporrt requires a version of Windows later than the minimum version that is supported by GDB. PR build/29966 points out that the GDB configure test for std::thread does not work in this situation, because _WIN32_WINNT is not defined in test program, and so seems to be fine. This patch is an attempt to fix the problem, by using the same setting for _WIN32_WINNT at configure time as is used at build time. I don't have access to one of the older systems so I don't think I can truly test this. I did do a mingw cross build, though. I'm going to ask the bug reporter to test it. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29966 --- diff --git a/gdb/configure b/gdb/configure index 0591d187f0a..0455af120f3 100755 --- a/gdb/configure +++ b/gdb/configure @@ -24969,7 +24969,17 @@ if ${gdb_cv_cxx_std_thread+:} false; then : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include + #if defined (__MINGW32__) || defined (__CYGWIN__) + # ifdef _WIN32_WINNT + # if _WIN32_WINNT < 0x0501 + # undef _WIN32_WINNT + # define _WIN32_WINNT 0x0501 + # endif + # else + # define _WIN32_WINNT 0x0501 + # endif + #endif /* __MINGW32__ || __CYGWIN__ */ + #include void callback() { } int main () diff --git a/gdbserver/configure b/gdbserver/configure index e5e0cb14d03..e807c60c08a 100755 --- a/gdbserver/configure +++ b/gdbserver/configure @@ -7951,7 +7951,17 @@ if ${gdb_cv_cxx_std_thread+:} false; then : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include + #if defined (__MINGW32__) || defined (__CYGWIN__) + # ifdef _WIN32_WINNT + # if _WIN32_WINNT < 0x0501 + # undef _WIN32_WINNT + # define _WIN32_WINNT 0x0501 + # endif + # else + # define _WIN32_WINNT 0x0501 + # endif + #endif /* __MINGW32__ || __CYGWIN__ */ + #include void callback() { } int main () diff --git a/gdbsupport/common-defs.h b/gdbsupport/common-defs.h index bcebd7187d9..5e529f6febf 100644 --- a/gdbsupport/common-defs.h +++ b/gdbsupport/common-defs.h @@ -70,7 +70,9 @@ /* We don't support Windows versions before XP, so we define _WIN32_WINNT correspondingly to ensure the Windows API headers - expose the required symbols. */ + expose the required symbols. + + NOTE: this must be kept in sync with common.m4. */ #if defined (__MINGW32__) || defined (__CYGWIN__) # ifdef _WIN32_WINNT # if _WIN32_WINNT < 0x0501 diff --git a/gdbsupport/common.m4 b/gdbsupport/common.m4 index c6b9a25b744..3909ec81ccb 100644 --- a/gdbsupport/common.m4 +++ b/gdbsupport/common.m4 @@ -100,7 +100,18 @@ AC_DEFUN([GDB_AC_COMMON], [ AC_CACHE_CHECK([for std::thread], gdb_cv_cxx_std_thread, [AC_COMPILE_IFELSE([AC_LANG_PROGRAM( - [[#include + dnl NOTE: this must be kept in sync with common-defs.h. + [[#if defined (__MINGW32__) || defined (__CYGWIN__) + # ifdef _WIN32_WINNT + # if _WIN32_WINNT < 0x0501 + # undef _WIN32_WINNT + # define _WIN32_WINNT 0x0501 + # endif + # else + # define _WIN32_WINNT 0x0501 + # endif + #endif /* __MINGW32__ || __CYGWIN__ */ + #include void callback() { }]], [[std::thread t(callback);]])], gdb_cv_cxx_std_thread=yes, diff --git a/gdbsupport/configure b/gdbsupport/configure index a0e4a3f94a4..9433ac41468 100755 --- a/gdbsupport/configure +++ b/gdbsupport/configure @@ -8967,7 +8967,17 @@ if ${gdb_cv_cxx_std_thread+:} false; then : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include + #if defined (__MINGW32__) || defined (__CYGWIN__) + # ifdef _WIN32_WINNT + # if _WIN32_WINNT < 0x0501 + # undef _WIN32_WINNT + # define _WIN32_WINNT 0x0501 + # endif + # else + # define _WIN32_WINNT 0x0501 + # endif + #endif /* __MINGW32__ || __CYGWIN__ */ + #include void callback() { } int main ()