From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from rock.gnat.com (rock.gnat.com [IPv6:2620:20:4000:0:a9e:1ff:fe9b:1d1]) by sourceware.org (Postfix) with ESMTP id 845C6385DC17 for ; Fri, 9 Oct 2020 19:53:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 845C6385DC17 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=none smtp.mailfrom=brobecke@local.brobecker.org Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 44C4F560C8; Fri, 9 Oct 2020 15:53:51 -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 AadyL9UkPiWv; Fri, 9 Oct 2020 15:53:51 -0400 (EDT) Received: from takamaka.brobecker.org (localhost.localdomain [127.0.0.1]) by rock.gnat.com (Postfix) with ESMTP id 1E8DE560C6; Fri, 9 Oct 2020 15:53:50 -0400 (EDT) Received: by takamaka.brobecker.org (Postfix, from userid 1000) id 5C6A4849D7; Fri, 9 Oct 2020 12:53:49 -0700 (PDT) From: Joel Brobecker To: gdb-patches@sourceware.org Cc: Joel Brobecker Subject: [pushed/gdb-10-branch] gnulib: fix stat/fstat build errors on old Windows version or using old MinGW Date: Fri, 9 Oct 2020 12:53:37 -0700 Message-Id: <20201009195337.18370-1-brobecker@adacore.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200928201147.GG15552@adacore.com> References: <20200928201147.GG15552@adacore.com> X-Spam-Status: No, score=-24.0 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, SPF_HELO_NONE, SPF_NONE, 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: Fri, 09 Oct 2020 19:53:53 -0000 Hello, 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. Pushed to the gdb-10-branch. Not pushed on the master branch, since the proper way to handle this on master is to update the gnulib import. Tested on x86-windows and x86_64-windows, through AdaCore's testsuite, to verify that this doesn't introduce any unexpected issue on the more recent versions of Windows. Thanks, -- Joel --- gnulib/ChangeLog | 12 ++ 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 + 9 files changed, 229 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/ChangeLog b/gnulib/ChangeLog index bf617428c4d..714ca1dc3e3 100644 --- a/gnulib/ChangeLog +++ b/gnulib/ChangeLog @@ -1,3 +1,15 @@ +2020-10-09 Joel Brobecker + + 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. + 2020-09-08 Tom Tromey PR win32/25302: 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