I manually commented out HAVE_PTHREAD_API from config.h and produced a libintl.a without references to pthreads. Configuring GCC with that custom libintl.a enables NLS. I now am building GCC with NLS and we will see how well it functions. gettext depends on pthreads by default and the versions distributed. Thanks, David On Thu, Nov 16, 2023 at 1:01 PM David Edelsohn wrote: > Bruno, > > The issue appears to be that intl/gnulib-lib/{mbrtowc.c,setlocale_null.c} > include pthread.h based on HAVE_PTHREAD_API, which is defined as 1 in > intl/config.h build directory despite requesting --disable-pthreads. > > Thanks, David > > On Thu, Nov 16, 2023 at 11:35 AM David Edelsohn wrote: > >> I configured gettext with --disable-pthreads and libintl.a still contains >> references to pthread_mutex_lock and pthread_mutex_unlock, which causes NLS >> configure to fail on AIX. >> >> How can this be corrected? >> >> Thanks, David >> >> libintl.a[libgnu_la-mbrtowc.o]: >> >> - U __lc_charmap >> >> - U errno >> >> - U .locale_encoding_classification >> >> - U .gl_get_mbtowc_lock >> >> - U .pthread_mutex_lock >> >> - U .mbtowc >> >> - U .pthread_mutex_unlock >> >> - U .abort >> >> 0 T ._libintl_mbrtowc >> >> 1952 D _libintl_mbrtowc >> >> libintl.a[libgnu_la-setlocale_null.o]: >> >> - U .gl_get_setlocale_null_lock >> >> - U .pthread_mutex_lock >> >> - U .setlocale >> >> - U .strlen >> >> - U .memcpy >> >> - U .pthread_mutex_unlock >> >> - U .abort >> >> - U .strcpy >> >> 336 T ._libintl_setlocale_null_r >> >> 400 T ._libintl_setlocale_null >> >> 812 D _libintl_setlocale_null_r >> >> 824 D _libintl_setlocale_null >> >> On Thu, Nov 16, 2023 at 11:00 AM David Edelsohn >> wrote: >> >>> Bruno, >>> >>> I have been able to tweak the environment and build gettext and >>> libintl. With the updated libintl and environment, GCC reliably does not >>> use NLS. >>> >>> The issue is that libintl utilizes pthreads. AIX does not provide no-op >>> pthread stubs in libc. pthreads is an explicit multilib on AIX. >>> >>> It is great that gettext and libintl can be built thread-safe, but GCC >>> (cc1, gcov, etc.) are not pthreads applications and are not built with >>> pthreads. Because libintl defaults to pthreads enabled, NLS cannot >>> function in GCC on AIX by default. The GCC included gettext was built in >>> the default for GCC libraries, which was not pthreads enabled. >>> >>> I can rebuild libintl with --disable-pthreads and I will see if that >>> works, but the default, distributed libintl library will not allow GCC to >>> be built with NLS enabled. And, no, GCC on AIX should not be forced to >>> build with pthreads. >>> >>> This is a regression in NLS support in GCC. >>> >>> Thanks, David >>> >>> >>> On Wed, Nov 15, 2023 at 5:39 PM Bruno Haible wrote: >>> >>>> David Edelsohn wrote: >>>> > I am using my own install of GCC for a reason. >>>> >>>> I have built GNU gettext 0.22.3 in various configurations on the AIX 7.1 >>>> and 7.3 machines in the compilefarm, and haven't encountered issues with >>>> 'max_align_t' nor with 'getpeername'. So, from my point of view, GNU >>>> gettext >>>> works fine on AIX with gcc and xlc (but not ibm-clang, which I haven't >>>> tested). >>>> >>>> You will surely understand that I cannot test a release against a >>>> compiler >>>> that exists only on your hard disk. >>>> >>>> The hint I gave you, based on the partial logs that you provided, is to >>>> look at the configure test for intmax_t first. >>>> >>>> Bruno >>>> >>>> >>>> >>>>