From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id aJEcJ+V8b1+wSQAAWB0awg (envelope-from ) for ; Sat, 26 Sep 2020 13:39:49 -0400 Received: by simark.ca (Postfix, from userid 112) id 8E4081EF4D; Sat, 26 Sep 2020 13:39:49 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=MAILING_LIST_MULTI, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 5B2AA1E8D0 for ; Sat, 26 Sep 2020 13:39:46 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8B8073850421; Sat, 26 Sep 2020 17:39:45 +0000 (GMT) Received: from rock.gnat.com (rock.gnat.com [205.232.38.15]) by sourceware.org (Postfix) with ESMTP id 9DD273858D35 for ; Sat, 26 Sep 2020 17:39:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 9DD273858D35 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=brobecker@adacore.com Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 3A94E117A86; Sat, 26 Sep 2020 13:39:42 -0400 (EDT) X-Virus-Scanned: Debian amavisd-new at gnat.com Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id vIaq5+JBUfmb; Sat, 26 Sep 2020 13:39:42 -0400 (EDT) Received: from takamaka.brobecker.org (localhost.localdomain [127.0.0.1]) by rock.gnat.com (Postfix) with ESMTP id E855C117A84; Sat, 26 Sep 2020 13:39:41 -0400 (EDT) Received: by takamaka.brobecker.org (Postfix, from userid 1000) id 6D4B1833BC; Sat, 26 Sep 2020 10:39:40 -0700 (PDT) Date: Sat, 26 Sep 2020 10:39:40 -0700 From: Joel Brobecker To: Eli Zaretskii Subject: Re: GDB 10.1 release -- 2020-09-18 Update Message-ID: <20200926173940.GB13066@adacore.com> References: <20200918234602.GA4674@adacore.com> <83y2l62oy9.fsf@gnu.org> <20200919194850.GB5376@adacore.com> <83h7rrxfi7.fsf@gnu.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="dDRMvlgZJXvWKvBx" Content-Disposition: inline In-Reply-To: <83h7rrxfi7.fsf@gnu.org> User-Agent: Mutt/1.9.4 (2018-02-28) X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: gdb-patches@sourceware.org Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" --dDRMvlgZJXvWKvBx Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi Eli, > > Let's test it first, both in your context, and in a situation > > where the Windows version is more recent, and also with a mingw64 > > version of MinGW. Perhaps the way we could do it is if you sent > > the actual GDB patch to install those two gnulib patches into > > our copy after testing on your end that this fixes things, and > > then I could test your patch with newer Windows + MinGW64? > > I attach below the patch for our copy of Gnulib on the release > branch. It works here. (I will again ask you to kindly regenerate > the configure script(s) that depend on gnulib/import/m4/*.m4 files.) The patch as you propose it is not enough, because you also need to regenerate the configury stuff. Also, I think that anyone re-rerunning the update-gnulib.sh script would end up overwriting your changes. Rather than doing everything by hand and risk missing something, I just propose we take advantage of our update-gnulib.sh script instead. To do so, I've imported the commits from gnulib as patches, and then updated the update-gnulib.sh script to include those two import patches in the sequence. The patches had to be adjusted a bit to the layout in the import as opposed to in the repository of origin, but they are otherwise the same. This is the first moment I've had to work on this, so the patch hasn't been tested on our Windows machines yet. I expected to be able to report on that mid-to-late next week. In the meantime, if you could test this patch in your environment, this would help us guarantee that things are good on your end too, now. -- Joel --dDRMvlgZJXvWKvBx Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="0001-gnulib-fix-stat-fstat-build-errors-on-old-Windows-ve.patch" >From 61cf3638c9e0c3a9258e097d2eef37eb781bc98d Mon Sep 17 00:00:00 2001 From: Joel Brobecker Date: Sat, 26 Sep 2020 10:15:34 -0700 Subject: [PATCH] gnulib: fix stat/fstat build errors on old Windows version or using old MinGW This commit imports two commits from gnulib's master branch fixing a build error when building on a version of Windows that's older than Vista, or when using an mingw's MinGW. gnulib/ChangeLog: GDB PR build/26607 * patches/0002-stat-fstat-windows-older-vista: New patch. * patches/0003-stat-fstat-windows-old-mingw: New patch. * update-gnulib.sh: Update to use the two new patches above. * import/m4/fstat.m4: Update after applying patches above. * import/m4/stat.m4: Ditto. * import/stat-w32.c: Ditto. * config.in: Regenerate. * configure: Regenerate. Change-Id: I92029ac55825e9116b4f77cd7acb0596102338b3 TN: T925-029 --- gnulib/config.in | 3 + gnulib/configure | 21 ++++ gnulib/import/m4/fstat.m4 | 3 +- gnulib/import/m4/stat.m4 | 13 +- gnulib/import/stat-w32.c | 29 ++++- .../0002-stat-fstat-windows-older-vista | 116 ++++++++++++++++++ .../patches/0003-stat-fstat-windows-old-mingw | 34 +++++ gnulib/update-gnulib.sh | 6 + 8 files changed, 217 insertions(+), 8 deletions(-) create mode 100644 gnulib/patches/0002-stat-fstat-windows-older-vista create mode 100644 gnulib/patches/0003-stat-fstat-windows-old-mingw diff --git a/gnulib/config.in b/gnulib/config.in index 4a20b470fb2..d8a5e8be727 100644 --- a/gnulib/config.in +++ b/gnulib/config.in @@ -693,6 +693,9 @@ /* Define to 1 if the system has the type `sa_family_t'. */ #undef HAVE_SA_FAMILY_T +/* Define to 1 if you have the header file. */ +#undef HAVE_SDKDDKVER_H + /* Define to 1 if you have the header file. */ #undef HAVE_SEARCH_H diff --git a/gnulib/configure b/gnulib/configure index 5c6add6e371..ef7f6d5e80f 100644 --- a/gnulib/configure +++ b/gnulib/configure @@ -10107,6 +10107,25 @@ fi + + case "$host_os" in + mingw*) + for ac_header in sdkddkver.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sdkddkver.h" "ac_cv_header_sdkddkver_h" "$ac_includes_default" +if test "x$ac_cv_header_sdkddkver_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SDKDDKVER_H 1 +_ACEOF + +fi + +done + + ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5 $as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; } if ${gl_cv_func_lstat_dereferences_slashed_symlink+:} false; then : @@ -19576,6 +19595,7 @@ $as_echo "#define GNULIB_TEST_FREXPL 1" >>confdefs.h esac + : fi @@ -27005,6 +27025,7 @@ $as_echo "#define REPLACE_FUNC_STAT_FILE 1" >>confdefs.h esac + : fi diff --git a/gnulib/import/m4/fstat.m4 b/gnulib/import/m4/fstat.m4 index 53c08961937..bd8cb796621 100644 --- a/gnulib/import/m4/fstat.m4 +++ b/gnulib/import/m4/fstat.m4 @@ -1,4 +1,4 @@ -# fstat.m4 serial 6 +# fstat.m4 serial 7 dnl Copyright (C) 2011-2020 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -35,5 +35,6 @@ AC_DEFUN([gl_FUNC_FSTAT], # Prerequisites of lib/fstat.c and lib/stat-w32.c. AC_DEFUN([gl_PREREQ_FSTAT], [ AC_REQUIRE([gl_HEADER_SYS_STAT_H]) + AC_REQUIRE([gl_PREREQ_STAT_W32]) : ]) diff --git a/gnulib/import/m4/stat.m4 b/gnulib/import/m4/stat.m4 index 8ef355f9407..5e827b594ab 100644 --- a/gnulib/import/m4/stat.m4 +++ b/gnulib/import/m4/stat.m4 @@ -1,4 +1,4 @@ -# serial 16 +# serial 17 # Copyright (C) 2009-2020 Free Software Foundation, Inc. # @@ -70,5 +70,16 @@ AC_DEFUN([gl_FUNC_STAT], # Prerequisites of lib/stat.c and lib/stat-w32.c. AC_DEFUN([gl_PREREQ_STAT], [ AC_REQUIRE([gl_HEADER_SYS_STAT_H]) + AC_REQUIRE([gl_PREREQ_STAT_W32]) : ]) + +# Prerequisites of lib/stat-w32.c. +AC_DEFUN([gl_PREREQ_STAT_W32], [ + AC_REQUIRE([AC_CANONICAL_HOST]) + case "$host_os" in + mingw*) + AC_CHECK_HEADERS([sdkddkver.h]) + ;; + esac +]) diff --git a/gnulib/import/stat-w32.c b/gnulib/import/stat-w32.c index 19bdfaa379c..108ce199cc8 100644 --- a/gnulib/import/stat-w32.c +++ b/gnulib/import/stat-w32.c @@ -20,10 +20,22 @@ #if defined _WIN32 && ! defined __CYGWIN__ -/* Ensure that defines FILE_ID_INFO. */ -#if !defined _WIN32_WINNT || (_WIN32_WINNT < _WIN32_WINNT_WIN8) -# undef _WIN32_WINNT -# define _WIN32_WINNT _WIN32_WINNT_WIN8 +/* Attempt to make define FILE_ID_INFO. + But ensure that the redefinition of _WIN32_WINNT does not make us assume + Windows Vista or newer when building for an older version of Windows. */ +#if HAVE_SDKDDKVER_H +# include +# if _WIN32_WINNT >= _WIN32_WINNT_VISTA +# define WIN32_ASSUME_VISTA 1 +# else +# define WIN32_ASSUME_VISTA 0 +# endif +# if !defined _WIN32_WINNT || (_WIN32_WINNT < _WIN32_WINNT_WIN8) +# undef _WIN32_WINNT +# define _WIN32_WINNT _WIN32_WINNT_WIN8 +# endif +#else +# define WIN32_ASSUME_VISTA (_WIN32_WINNT >= _WIN32_WINNT_VISTA) #endif #include @@ -46,7 +58,12 @@ #undef GetFinalPathNameByHandle #define GetFinalPathNameByHandle GetFinalPathNameByHandleA -#if !(_WIN32_WINNT >= _WIN32_WINNT_VISTA) +/* Older mingw headers do not define VOLUME_NAME_NONE. */ +#ifndef VOLUME_NAME_NONE +# define VOLUME_NAME_NONE 4 +#endif + +#if !WIN32_ASSUME_VISTA /* Avoid warnings from gcc -Wcast-function-type. */ # define GetProcAddress \ @@ -149,7 +166,7 @@ _gl_fstat_by_handle (HANDLE h, const char *path, struct stat *buf) DWORD type = GetFileType (h); if (type == FILE_TYPE_DISK) { -#if !(_WIN32_WINNT >= _WIN32_WINNT_VISTA) +#if !WIN32_ASSUME_VISTA if (!initialized) initialize (); #endif diff --git a/gnulib/patches/0002-stat-fstat-windows-older-vista b/gnulib/patches/0002-stat-fstat-windows-older-vista new file mode 100644 index 00000000000..edb98276f60 --- /dev/null +++ b/gnulib/patches/0002-stat-fstat-windows-older-vista @@ -0,0 +1,116 @@ +From 1796cda9975bd459a87222676030b943869c686e Mon Sep 17 00:00:00 2001 +From: Bruno Haible +Date: Wed, 16 Sep 2020 23:51:52 +0200 +Subject: [PATCH 1/2] stat, fstat: Fix when compiling for versions older than + Windows Vista. + +Reported by Eli Zaretskii in +. + +* lib/stat-w32.c: Include . Test the value of _WIN32_WINNT +that was originally set before we redefined it. +* m4/stat.m4 (gl_PREREQ_STAT_W32): New macro. +(gl_PREREQ_STAT): Require it. +* m4/fstat.m4 (gl_PREREQ_FSTAT): Likewise. +--- + stat-w32.c | 24 ++++++++++++++++++------ + m4/fstat.m4 | 3 ++- + m4/stat.m4 | 13 ++++++++++++- + 4 files changed, 43 insertions(+), 8 deletions(-) + +diff --git a/gnulib/import/stat-w32.c b/gnulib/import/stat-w32.c +index 19bdfaa37..72442e933 100644 +--- a/gnulib/import/stat-w32.c ++++ b/gnulib/import/stat-w32.c +@@ -20,10 +20,22 @@ + + #if defined _WIN32 && ! defined __CYGWIN__ + +-/* Ensure that defines FILE_ID_INFO. */ +-#if !defined _WIN32_WINNT || (_WIN32_WINNT < _WIN32_WINNT_WIN8) +-# undef _WIN32_WINNT +-# define _WIN32_WINNT _WIN32_WINNT_WIN8 ++/* Attempt to make define FILE_ID_INFO. ++ But ensure that the redefinition of _WIN32_WINNT does not make us assume ++ Windows Vista or newer when building for an older version of Windows. */ ++#if HAVE_SDKDDKVER_H ++# include ++# if _WIN32_WINNT >= _WIN32_WINNT_VISTA ++# define WIN32_ASSUME_VISTA 1 ++# else ++# define WIN32_ASSUME_VISTA 0 ++# endif ++# if !defined _WIN32_WINNT || (_WIN32_WINNT < _WIN32_WINNT_WIN8) ++# undef _WIN32_WINNT ++# define _WIN32_WINNT _WIN32_WINNT_WIN8 ++# endif ++#else ++# define WIN32_ASSUME_VISTA (_WIN32_WINNT >= _WIN32_WINNT_VISTA) + #endif + + #include +@@ -46,7 +58,7 @@ + #undef GetFinalPathNameByHandle + #define GetFinalPathNameByHandle GetFinalPathNameByHandleA + +-#if !(_WIN32_WINNT >= _WIN32_WINNT_VISTA) ++#if !WIN32_ASSUME_VISTA + + /* Avoid warnings from gcc -Wcast-function-type. */ + # define GetProcAddress \ +@@ -149,7 +161,7 @@ _gl_fstat_by_handle (HANDLE h, const char *path, struct stat *buf) + DWORD type = GetFileType (h); + if (type == FILE_TYPE_DISK) + { +-#if !(_WIN32_WINNT >= _WIN32_WINNT_VISTA) ++#if !WIN32_ASSUME_VISTA + if (!initialized) + initialize (); + #endif +diff --git a/gnulib/import/m4/fstat.m4 b/gnulib/import/m4/fstat.m4 +index 53c089619..bd8cb7966 100644 +--- a/gnulib/import/m4/fstat.m4 ++++ b/gnulib/import/m4/fstat.m4 +@@ -1,4 +1,4 @@ +-# fstat.m4 serial 6 ++# fstat.m4 serial 7 + dnl Copyright (C) 2011-2020 Free Software Foundation, Inc. + dnl This file is free software; the Free Software Foundation + dnl gives unlimited permission to copy and/or distribute it, +@@ -35,5 +35,6 @@ AC_DEFUN([gl_FUNC_FSTAT], + # Prerequisites of lib/fstat.c and lib/stat-w32.c. + AC_DEFUN([gl_PREREQ_FSTAT], [ + AC_REQUIRE([gl_HEADER_SYS_STAT_H]) ++ AC_REQUIRE([gl_PREREQ_STAT_W32]) + : + ]) +diff --git a/gnulib/import/m4/stat.m4 b/gnulib/import/m4/stat.m4 +index 46e9abcee..db2038f63 100644 +--- a/gnulib/import/m4/stat.m4 ++++ b/gnulib/import/m4/stat.m4 +@@ -1,4 +1,4 @@ +-# serial 16 ++# serial 17 + + # Copyright (C) 2009-2020 Free Software Foundation, Inc. + # +@@ -70,5 +70,16 @@ AC_DEFUN([gl_FUNC_STAT], + # Prerequisites of lib/stat.c and lib/stat-w32.c. + AC_DEFUN([gl_PREREQ_STAT], [ + AC_REQUIRE([gl_HEADER_SYS_STAT_H]) ++ AC_REQUIRE([gl_PREREQ_STAT_W32]) + : + ]) ++ ++# Prerequisites of lib/stat-w32.c. ++AC_DEFUN([gl_PREREQ_STAT_W32], [ ++ AC_REQUIRE([AC_CANONICAL_HOST]) ++ case "$host_os" in ++ mingw*) ++ AC_CHECK_HEADERS([sdkddkver.h]) ++ ;; ++ esac ++]) +-- +2.17.1 + diff --git a/gnulib/patches/0003-stat-fstat-windows-old-mingw b/gnulib/patches/0003-stat-fstat-windows-old-mingw new file mode 100644 index 00000000000..e43c88f08ce --- /dev/null +++ b/gnulib/patches/0003-stat-fstat-windows-old-mingw @@ -0,0 +1,34 @@ +From f8c23f202d11992182e87736e73929bcc369cc75 Mon Sep 17 00:00:00 2001 +From: Bruno Haible +Date: Wed, 16 Sep 2020 23:52:44 +0200 +Subject: [PATCH 2/2] stat, fstat: Fix compilation error with old mingw + headers. + +Reported by Eli Zaretskii in +. + +* lib/stat-w32.c (VOLUME_NAME_NONE): Define if the Windows headers don't +define it. +--- + stat-w32.c | 5 +++++ + 2 files changed, 13 insertions(+) + +diff --git a/gnulib/import/stat-w32.c b/gnulib/import/stat-w32.c +index 72442e933..108ce199c 100644 +--- a/gnulib/import/stat-w32.c ++++ b/gnulib/import/stat-w32.c +@@ -58,6 +58,11 @@ + #undef GetFinalPathNameByHandle + #define GetFinalPathNameByHandle GetFinalPathNameByHandleA + ++/* Older mingw headers do not define VOLUME_NAME_NONE. */ ++#ifndef VOLUME_NAME_NONE ++# define VOLUME_NAME_NONE 4 ++#endif ++ + #if !WIN32_ASSUME_VISTA + + /* Avoid warnings from gcc -Wcast-function-type. */ +-- +2.17.1 + diff --git a/gnulib/update-gnulib.sh b/gnulib/update-gnulib.sh index ac5e3d56a29..3aa70141a59 100755 --- a/gnulib/update-gnulib.sh +++ b/gnulib/update-gnulib.sh @@ -174,6 +174,12 @@ apply_patches () } apply_patches "patches/0001-use-windows-stat" +# The following two patches are specific imports of two commits +# already in gnulib's master. We import those patches individually +# because we want to avoid doing a standard gnulib update, which +# would be too disruptive for a release branch. +apply_patches "patches/0002-stat-fstat-windows-older-vista" +apply_patches "patches/0003-stat-fstat-windows-old-mingw" # Regenerate all necessary files... aclocal && -- 2.17.1 --dDRMvlgZJXvWKvBx--