PR29915, bfdio.c does not compile with mingw.org's MinGW
authorAlan Modra <amodra@gmail.com>
Tue, 20 Dec 2022 07:31:07 +0000 (18:01 +1030)
committerAlan Modra <amodra@gmail.com>
Tue, 20 Dec 2022 08:31:10 +0000 (19:01 +1030)
PR 29915
* configure.ac: Add AC_CHECK_DECLS test ___lc_codepage_func.
* configure: Regenerate.
* config.in: Regenerate.
* bfdio.c (___lc_codepage_func): Move declaration to..
(_bfd_real_fopen): ..here, and use !HAVE_DECL____LC_CODEPAGE_FUNC.

bfd/bfdio.c
bfd/config.in
bfd/configure
bfd/configure.ac

index 571f12b625a1b09ebfc50c758d73e52295e52c6b..a67d4bbbeb71bd4db85bb6cb39c1f214f322e0b0 100644 (file)
 #include <locale.h>
 #endif
 
-#if defined(__MINGW64_VERSION_MAJOR) && __MINGW64_VERSION_MAJOR < 9
-/* This prototype was added to locale.h in version 9.0 of MinGW-w64.  */
-_CRTIMP unsigned int __cdecl ___lc_codepage_func(void);
-#endif
-
 #ifndef S_IXUSR
 #define S_IXUSR 0100    /* Execute by owner.  */
 #endif
@@ -127,7 +122,11 @@ _bfd_real_fopen (const char *filename, const char *modes)
    const wchar_t  prefix[] = L"\\\\?\\";
    const size_t   partPathLen = strlen (filename) + 1;
 #ifdef __MINGW32__
-   const unsigned int cp = ___lc_codepage_func();
+#if !HAVE_DECL____LC_CODEPAGE_FUNC
+/* This prototype was added to locale.h in version 9.0 of MinGW-w64.  */
+   _CRTIMP unsigned int __cdecl ___lc_codepage_func (void);
+#endif
+   const unsigned int cp = ___lc_codepage_func ();
 #else
    const unsigned int cp = CP_UTF8;
 #endif
index a59304e0a66a6c089168e9f1cbb48be067d56d33..e5132df393c323a08350d04abce1bc238e494d08 100644 (file)
    don't. */
 #undef HAVE_DECL_VASPRINTF
 
+/* Define to 1 if you have the declaration of `___lc_codepage_func', and to 0
+   if you don't. */
+#undef HAVE_DECL____LC_CODEPAGE_FUNC
+
 /* Define to 1 if you have the <dlfcn.h> header file. */
 #undef HAVE_DLFCN_H
 
index b532fe7e8afa20ad74aa9eb975bbebf4b9a89cf4..31dfac508a2fe44bde722ac4728652188471edb8 100755 (executable)
@@ -13006,6 +13006,18 @@ cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_STRNLEN $ac_have_decl
 _ACEOF
 
+ac_fn_c_check_decl "$LINENO" "___lc_codepage_func" "ac_cv_have_decl____lc_codepage_func" "#include <locale.h>
+"
+if test "x$ac_cv_have_decl____lc_codepage_func" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL____LC_CODEPAGE_FUNC $ac_have_decl
+_ACEOF
+
 
 
 case "${host}" in
index 45a293d0bcb15250b862f75272e08346570ef57b..da6933bffc6a18ba32f697cf88af132c16ae6216 100644 (file)
@@ -227,6 +227,7 @@ AC_CHECK_FUNCS(fcntl fdopen fileno fls getgid getpagesize getrlimit getuid \
               sysconf)
 
 AC_CHECK_DECLS([basename, ffs, stpcpy, asprintf, vasprintf, strnlen])
+AC_CHECK_DECLS([___lc_codepage_func], [], [], [[#include <locale.h>]])
 
 BFD_BINARY_FOPEN