From: Paul Eggert Date: Wed, 3 Mar 2021 00:27:39 +0000 (-0800) Subject: mbrtowc: port to AIX 7.1 with xlc 12.1 X-Git-Tag: v1.0~3054 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=495dcf8d964e0b3a712f9345554a03d450851d8a;p=gnulib.git mbrtowc: port to AIX 7.1 with xlc 12.1 Fix a problem with locks when building GNU Tar (Savannah commit 55f2a0772e08b9febac3ac0de5cb048d4c60d2f5) on AIX 7.1 with IBM XL C/C++ V12.1 using ‘./configure CC=xlc’. The link fails due to missing definitions of pthread_mutex_lock and pthread_mutex_unlock. GNU Tar uses unlocked-io and so should not need to worry about multithreading or locks. * lib/mbtowc-lock.h (mbtowc_with_lock) [USE_UNLOCKED_IO]: Don’t bother with locks, since this app is single-threaded. There may be similar linking problems with lib/nl_langinfo.c and lib/setlocale_null.c but my GNU Tar build didn’t run into them, so I left them alone for now. --- diff --git a/ChangeLog b/ChangeLog index 0304f69581..7ba4369257 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2021-03-02 Paul Eggert + + mbrtowc: port to AIX 7.1 with xlc 12.1 + Fix a problem with locks when building GNU Tar (Savannah commit + 55f2a0772e08b9febac3ac0de5cb048d4c60d2f5) on AIX 7.1 with IBM XL + C/C++ V12.1 using ‘./configure CC=xlc’. The link fails due to + missing definitions of pthread_mutex_lock and + pthread_mutex_unlock. GNU Tar uses unlocked-io and so + should not need to worry about multithreading or locks. + * lib/mbtowc-lock.h (mbtowc_with_lock) [USE_UNLOCKED_IO]: + Don’t bother with locks, since this app is single-threaded. + There may be similar linking problems with lib/nl_langinfo.c and + lib/setlocale_null.c but my GNU Tar build didn’t run into them, so + I left them alone for now. + 2021-03-01 Paul Eggert unlocked-io: do not redefine getc_unlocked etc. diff --git a/lib/mbtowc-lock.h b/lib/mbtowc-lock.h index 696b12c584..b7c5ba8a08 100644 --- a/lib/mbtowc-lock.h +++ b/lib/mbtowc-lock.h @@ -32,7 +32,15 @@ mbtowc_unlocked (wchar_t *pwc, const char *p, size_t m) /* Prohibit renaming this symbol. */ #undef gl_get_mbtowc_lock -#if defined _WIN32 && !defined __CYGWIN__ +#ifdef USE_UNLOCKED_IO + +static int +mbtowc_with_lock (wchar_t *pwc, const char *p, size_t m) +{ + return mbtowc_unlocked (pwc, p, m); +} + +#elif defined _WIN32 && !defined __CYGWIN__ extern __declspec(dllimport) CRITICAL_SECTION *gl_get_mbtowc_lock (void);