diff options
author | Alan Modra <amodra@gmail.com> | 2022-12-20 18:01:07 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2022-12-20 19:01:10 +1030 |
commit | 9d0991449285833b9a77cc02850a1e113e460362 (patch) | |
tree | e5047d50379eb53c84a593c91acc8a85f5cde6fd | |
parent | b3737aadf1b6e11e37f8584c4feef73fd5c399ba (diff) | |
download | binutils-gdb-9d0991449285833b9a77cc02850a1e113e460362.tar.gz |
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.
-rw-r--r-- | bfd/bfdio.c | 11 | ||||
-rw-r--r-- | bfd/config.in | 4 | ||||
-rwxr-xr-x | bfd/configure | 12 | ||||
-rw-r--r-- | 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 |