public inbox for binutils-cvs@sourceware.org
 help / color / mirror / Atom feed
* [binutils-gdb] PR29915, bfdio.c does not compile with mingw.org's MinGW
@ 2022-12-20  8:35 Alan Modra
  0 siblings, 0 replies; only message in thread
From: Alan Modra @ 2022-12-20  8:35 UTC (permalink / raw)
  To: bfd-cvs

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=9d0991449285833b9a77cc02850a1e113e460362

commit 9d0991449285833b9a77cc02850a1e113e460362
Author: Alan Modra <amodra@gmail.com>
Date:   Tue Dec 20 18:01:07 2022 +1030

    PR29915, bfdio.c does not compile with mingw.org's MinGW
    
            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.

Diff:
---
 bfd/bfdio.c      | 11 +++++------
 bfd/config.in    |  4 ++++
 bfd/configure    | 12 ++++++++++++
 bfd/configure.ac |  1 +
 4 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/bfd/bfdio.c b/bfd/bfdio.c
index 571f12b625a..a67d4bbbeb7 100644
--- a/bfd/bfdio.c
+++ b/bfd/bfdio.c
@@ -31,11 +31,6 @@
 #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
diff --git a/bfd/config.in b/bfd/config.in
index a59304e0a66..e5132df393c 100644
--- a/bfd/config.in
+++ b/bfd/config.in
@@ -64,6 +64,10 @@
    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
 
diff --git a/bfd/configure b/bfd/configure
index b532fe7e8af..31dfac508a2 100755
--- a/bfd/configure
+++ b/bfd/configure
@@ -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
diff --git a/bfd/configure.ac b/bfd/configure.ac
index 45a293d0bcb..da6933bffc6 100644
--- a/bfd/configure.ac
+++ b/bfd/configure.ac
@@ -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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-12-20  8:35 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-20  8:35 [binutils-gdb] PR29915, bfdio.c does not compile with mingw.org's MinGW Alan Modra

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).