From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from eggs.gnu.org (eggs.gnu.org [IPv6:2001:470:142:3::10]) by sourceware.org (Postfix) with ESMTPS id 19CDE386EC2D for ; Mon, 21 Sep 2020 16:26:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 19CDE386EC2D Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gnu.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=eliz@gnu.org Received: from fencepost.gnu.org ([2001:470:142:3::e]:60615) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kKOeG-00070Z-1p; Mon, 21 Sep 2020 12:26:41 -0400 Received: from [176.228.60.248] (port=3259 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1kKOeF-0005DE-8r; Mon, 21 Sep 2020 12:26:39 -0400 Date: Mon, 21 Sep 2020 19:26:40 +0300 Message-Id: <83h7rrxfi7.fsf@gnu.org> From: Eli Zaretskii To: Joel Brobecker Cc: gdb-patches@sourceware.org In-Reply-To: <20200919194850.GB5376@adacore.com> (message from Joel Brobecker on Sat, 19 Sep 2020 12:48:50 -0700) Subject: Re: GDB 10.1 release -- 2020-09-18 Update References: <20200918234602.GA4674@adacore.com> <83y2l62oy9.fsf@gnu.org> <20200919194850.GB5376@adacore.com> X-Spam-Status: No, score=-8.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org 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: , X-List-Received-Date: Mon, 21 Sep 2020 16:26:43 -0000 > Date: Sat, 19 Sep 2020 12:48:50 -0700 > From: Joel Brobecker > Cc: gdb-patches@sourceware.org > > 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.) > There's also the question of updating gnulib on master. I haven't > heard of anyone who's volunteered for that one... I assume one > will happen at some point out of someone needing it for other > reasons, but there is no guarantee this will happen. Do you want > to take care of doing an update as well? I've never done this, and would prefer that someone else does that. Sorry for being such a coward. Here's the patch for the release branch: diff --git a/gnulib/ChangeLog b/gnulib/ChangeLog index bf61742..dfd6d79 100644 --- a/gnulib/ChangeLog +++ b/gnulib/ChangeLog @@ -1,3 +1,16 @@ +2020-09-16 Bruno Haible + + stat, fstat: Fix when compiling for versions older than Windows Vista. + Reported by Eli Zaretskii in + . + * import/stat-w32.c: Include . Test the value of + _WIN32_WINNT that was originally set before we redefined it. + (VOLUME_NAME_NONE): Define if the Windows headers don't define + it. + * import/m4/stat.m4 (gl_PREREQ_STAT_W32): New macro. + (gl_PREREQ_STAT): Require it. + * import/m4/fstat.m4 (gl_PREREQ_FSTAT): Likewise. + 2020-09-08 Tom Tromey PR win32/25302: diff --git a/gnulib/import/m4/fstat.m4 b/gnulib/import/m4/fstat.m4 index 53c0896..bd8cb79 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 8ef355f..5e827b5 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 19bdfaa..108ce19 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