forked from Imagelibrary/binutils-gdb
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.
This commit is contained in:
@@ -1,3 +1,15 @@
|
|||||||
|
2020-10-09 Joel Brobecker <brobecker@adacore.com>
|
||||||
|
|
||||||
|
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 <tromey@adacore.com>
|
2020-09-08 Tom Tromey <tromey@adacore.com>
|
||||||
|
|
||||||
PR win32/25302:
|
PR win32/25302:
|
||||||
|
|||||||
@@ -693,6 +693,9 @@
|
|||||||
/* Define to 1 if the system has the type `sa_family_t'. */
|
/* Define to 1 if the system has the type `sa_family_t'. */
|
||||||
#undef HAVE_SA_FAMILY_T
|
#undef HAVE_SA_FAMILY_T
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sdkddkver.h> header file. */
|
||||||
|
#undef HAVE_SDKDDKVER_H
|
||||||
|
|
||||||
/* Define to 1 if you have the <search.h> header file. */
|
/* Define to 1 if you have the <search.h> header file. */
|
||||||
#undef HAVE_SEARCH_H
|
#undef HAVE_SEARCH_H
|
||||||
|
|
||||||
|
|||||||
21
gnulib/configure
vendored
21
gnulib/configure
vendored
@@ -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 "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5
|
||||||
$as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; }
|
$as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; }
|
||||||
if ${gl_cv_func_lstat_dereferences_slashed_symlink+:} false; then :
|
if ${gl_cv_func_lstat_dereferences_slashed_symlink+:} false; then :
|
||||||
@@ -19576,6 +19595,7 @@ $as_echo "#define GNULIB_TEST_FREXPL 1" >>confdefs.h
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
:
|
:
|
||||||
|
|
||||||
fi
|
fi
|
||||||
@@ -27005,6 +27025,7 @@ $as_echo "#define REPLACE_FUNC_STAT_FILE 1" >>confdefs.h
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
:
|
:
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# fstat.m4 serial 6
|
# fstat.m4 serial 7
|
||||||
dnl Copyright (C) 2011-2020 Free Software Foundation, Inc.
|
dnl Copyright (C) 2011-2020 Free Software Foundation, Inc.
|
||||||
dnl This file is free software; the Free Software Foundation
|
dnl This file is free software; the Free Software Foundation
|
||||||
dnl gives unlimited permission to copy and/or distribute it,
|
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.
|
# Prerequisites of lib/fstat.c and lib/stat-w32.c.
|
||||||
AC_DEFUN([gl_PREREQ_FSTAT], [
|
AC_DEFUN([gl_PREREQ_FSTAT], [
|
||||||
AC_REQUIRE([gl_HEADER_SYS_STAT_H])
|
AC_REQUIRE([gl_HEADER_SYS_STAT_H])
|
||||||
|
AC_REQUIRE([gl_PREREQ_STAT_W32])
|
||||||
:
|
:
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# serial 16
|
# serial 17
|
||||||
|
|
||||||
# Copyright (C) 2009-2020 Free Software Foundation, Inc.
|
# 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.
|
# Prerequisites of lib/stat.c and lib/stat-w32.c.
|
||||||
AC_DEFUN([gl_PREREQ_STAT], [
|
AC_DEFUN([gl_PREREQ_STAT], [
|
||||||
AC_REQUIRE([gl_HEADER_SYS_STAT_H])
|
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
|
||||||
|
])
|
||||||
|
|||||||
@@ -20,10 +20,22 @@
|
|||||||
|
|
||||||
#if defined _WIN32 && ! defined __CYGWIN__
|
#if defined _WIN32 && ! defined __CYGWIN__
|
||||||
|
|
||||||
/* Ensure that <windows.h> defines FILE_ID_INFO. */
|
/* Attempt to make <windows.h> define FILE_ID_INFO.
|
||||||
#if !defined _WIN32_WINNT || (_WIN32_WINNT < _WIN32_WINNT_WIN8)
|
But ensure that the redefinition of _WIN32_WINNT does not make us assume
|
||||||
# undef _WIN32_WINNT
|
Windows Vista or newer when building for an older version of Windows. */
|
||||||
# define _WIN32_WINNT _WIN32_WINNT_WIN8
|
#if HAVE_SDKDDKVER_H
|
||||||
|
# include <sdkddkver.h>
|
||||||
|
# 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
|
#endif
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
@@ -46,7 +58,12 @@
|
|||||||
#undef GetFinalPathNameByHandle
|
#undef GetFinalPathNameByHandle
|
||||||
#define GetFinalPathNameByHandle GetFinalPathNameByHandleA
|
#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. */
|
/* Avoid warnings from gcc -Wcast-function-type. */
|
||||||
# define GetProcAddress \
|
# define GetProcAddress \
|
||||||
@@ -149,7 +166,7 @@ _gl_fstat_by_handle (HANDLE h, const char *path, struct stat *buf)
|
|||||||
DWORD type = GetFileType (h);
|
DWORD type = GetFileType (h);
|
||||||
if (type == FILE_TYPE_DISK)
|
if (type == FILE_TYPE_DISK)
|
||||||
{
|
{
|
||||||
#if !(_WIN32_WINNT >= _WIN32_WINNT_VISTA)
|
#if !WIN32_ASSUME_VISTA
|
||||||
if (!initialized)
|
if (!initialized)
|
||||||
initialize ();
|
initialize ();
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
116
gnulib/patches/0002-stat-fstat-windows-older-vista
Normal file
116
gnulib/patches/0002-stat-fstat-windows-older-vista
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
From 1796cda9975bd459a87222676030b943869c686e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Bruno Haible <bruno@clisp.org>
|
||||||
|
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 <eliz@gnu.org> in
|
||||||
|
<https://lists.gnu.org/archive/html/bug-gnulib/2020-09/msg00027.html>.
|
||||||
|
|
||||||
|
* lib/stat-w32.c: Include <sdkddkver.h>. 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 <windows.h> 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 <windows.h> 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 <sdkddkver.h>
|
||||||
|
+# 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 <sys/types.h>
|
||||||
|
@@ -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
|
||||||
|
|
||||||
34
gnulib/patches/0003-stat-fstat-windows-old-mingw
Normal file
34
gnulib/patches/0003-stat-fstat-windows-old-mingw
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
From f8c23f202d11992182e87736e73929bcc369cc75 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Bruno Haible <bruno@clisp.org>
|
||||||
|
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 <eliz@gnu.org> in
|
||||||
|
<https://lists.gnu.org/archive/html/bug-gnulib/2020-09/msg00027.html>.
|
||||||
|
|
||||||
|
* 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
|
||||||
|
|
||||||
@@ -174,6 +174,12 @@ apply_patches ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
apply_patches "patches/0001-use-windows-stat"
|
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...
|
# Regenerate all necessary files...
|
||||||
aclocal &&
|
aclocal &&
|
||||||
|
|||||||
Reference in New Issue
Block a user