David Edelsohn writes: > On Sun, Nov 19, 2023 at 5:15 PM Bruno Haible wrote: > >> David Edelsohn wrote: >> > --disable-threads currently does not completely disable threads. Bruno >> is >> > suggesting --enable-threads=isoc that relies on mtx mutex functions in >> libc. >> >> Unfortunately, as said in the other mail today, relying only on mtx_* >> functions >> did not drop the dependency towards libpthreads. >> >> So, I've made a new release gettext-0.22.4, that includes only these >> changes: >> >> - AM_GNU_GETTEXT now recognizes a statically built libintl on macOS and >> AIX. >> >> - Passing --disable-threads now builds a libintl that, on AIX, does not >> need -lpthread. >> >> - Other build fixes on AIX. >> >> > Yes, GCC should configure the in tree gettext with --disable-threads, but >> > that configure option is not completely effective and does not produce a >> > build without threads references. >> >> Now it is effective. But you (Arsen) should state in the documentation >> (gcc/doc/install.texi) that for --disable-threads to have this effect, >> one needs gettext version 0.22.4 or newer. >> > > So the question is do we want to change GCC on AIX to always link against > pthreads so that GCC can build with default, external builds of gettext > libintl. I don't see a path for i18n support to work for GCC on AIX > without that unfortunate change. Well, if detectable by the build system for, I imagine we could avoid pthread if gettext is built without them. With the 'private' gettext build, we should never need threads anyway. P.S: Building on AIX is nearly successful. gettext-0.22.4 builds, twice or even thrice, but ends up producing a bootstrap comparison fail: make[3]: Leaving directory '/home/arsen/build' Comparing stages 2 and 3 Bootstrap comparison failure! gettext/libasprintf/autosprintf.o differs make[2]: *** [Makefile:23435: compare] Error 1 Upon inspecting these files, I see the following diff: ~ 1 $ git diff <(objdump --all-headers autosprintf.o2) <(objdump --all-headers autosprintf.o3) diff --git a/dev/fd/63 b/dev/fd/62 --- a/dev/fd/63 +++ b/dev/fd/62 ... @@ -92,7 +92,7 @@ AUX indx 30 prmhsh 0 snhsh 0 typ 2 algn 0 clss 0 stb 0 snstb 0 AUX val 23 prmhsh 0 snhsh 0 typ 1 algn 4 clss 1 stb 0 snstb 0 [ 58](sec 1)(fl 0x00)(ty 0)(scl 107) (nx 1) 0x00000460 _autosprintf.ro_ AUX val 312 prmhsh 0 snhsh 0 typ 1 algn 4 clss 1 stb 0 snstb 0 -[ 60](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 1) 0x00000460 _GLOBAL__F_.._.._.._gcc_gettext_gettext_runtime_libasprintf_autosprintf.cc_DFF67DD7_0xa20d51b1d7a1772f +[ 60](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 1) 0x00000460 _GLOBAL__F_.._.._.._gcc_gettext_gettext_runtime_libasprintf_autosprintf.cc_DFF67DD7_0x9c04058e89d7a7a4 AUX indx 58 prmhsh 0 snhsh 0 typ 2 algn 0 clss 1 stb 0 snstb 0 [ 62](sec 2)(fl 0x00)(ty 0)(scl 107) (nx 1) 0x000005a0 _autosprintf.rw_ AUX val 0 prmhsh 0 snhsh 0 typ 1 algn 4 clss 5 stb 0 snstb 0 I am unsure what this symbol is. It does not appear in the stripped binary. -- Arsen Arsenović