On Sun, Oct 25, 2026 at 04:33:58PM +0200, Eli Zaretskii wrote: > > Date: Sun, 25 Oct 2026 14:28:52 +0100 > > From: Patrice Dumas <[email protected]> > > > > Hello, > > > > I have been testing the CI with --disable-perl-xs and > > --enable-additional-checks, which leads to a C-only build (no Perl > > flags, no Perl XS) as long as the dependencies are there (mainly iconv). > > In this setup, the tta/C shared libraries are built (though they are not > > used by anything), and the texistatic executable is built too (no Perl > > headers used, no link to Perl, no call to Perl, statically linked). > > ctexi2any is not built in this setup. > > > > It fails on the Cygwin 32 platform when linking libtexinfo-convert with > > many undefined references errors to symbols that are supposed to be in > > libtexinfo.dll. (As a side note, the Cygwin 32 distribution is > > unmaintained.) > > > > Comparing with the flags present with Perl, the following link flags are > > in Perl flags and could explain why it does not fail when Perl flags are > > used: > > -Wl,--enable-auto-import -Wl,--export-all-symbols > > but it could be something else. > > > > > > The link command and an example of failures (there are many more): > > > > 2026-10-25T10:38:56.1347576Z libtool: link: gcc -shared > > convert/.libs/libtexinfo_convert_la-converter.o > > convert/.libs/libtexinfo_convert_la-convert_indices.o > > convert/.libs/libtexinfo_convert_la-cmd_converter.o > > convert/.libs/libtexinfo_convert_la-converters_options.o > > convert/.libs/libtexinfo_convert_la-convert_to_plaintext.o > > convert/.libs/libtexinfo_convert_la-convert_to_info.o > > convert/.libs/libtexinfo_convert_la-convert_html.o > > convert/.libs/libtexinfo_convert_la-format_html.o > > convert/.libs/libtexinfo_convert_la-html_converter_init_options.o > > convert/.libs/libtexinfo_convert_la-html_converter_finish.o > > convert/.libs/libtexinfo_convert_la-html_conversion_state.o > > convert/.libs/libtexinfo_convert_la-html_prepare_converter.o > > convert/.libs/libtexinfo_convert_la-html_converter_api.o > > convert/.libs/libtexinfo_convert_la-plaintexinfo_converter_api.o > > convert/.libs/libtexinfo_convert_la-plaintext_paragraph.o > > convert/.libs/libtexinfo_convert_la-rawtext_converter_api.o > > -Wl,--whole-archive ./.libs/libcallperl_libtexinfo_convert.a > > -Wl,--no-whole-archive ./.libs/libtexinfo.dll.a > > /cygdrive/d/a/ci-check/ci-check/texinfo-7.3.20261025dev/build/tta/C/.libs/libtexinfo.dll.a > > -liconv -lintl -g -O2 -o .libs/cygtexinfo-convert-1.dll > > -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker > > .libs/libtexinfo-convert.dll.a > > 2026-10-25T10:38:56.1348171Z > > /usr/lib/gcc/i686-pc-cygwin/11/../../../../i686-pc-cygwin/bin/ld: > > convert/.libs/libtexinfo_convert_la-converter.o: in function > > `free_output_unit_files_file': > > 2026-10-25T10:38:56.1348562Z > > /cygdrive/d/a/ci-check/ci-check/texinfo-7.3.20261025dev/build/tta/C/../../../tta/C/convert/converter.c:2345: > > undefined reference to `rpl_free' > > ... > > 2026-10-25T10:38:56.1351041Z > > /cygdrive/d/a/ci-check/ci-check/texinfo-7.3.20261025dev/build/tta/C/../../../tta/C/convert/converter.c:2202: > > undefined reference to `fatal' > > This link command is supposed to produce the shared library > .libs/cygtexinfo-convert-1.dll, right? > > The link command line mentions .libs/libtexinfo.dll.a several times. > This is an import library, which is supposed to tell the linker in > which DLL to find each function it needs. If you run "nm -A" on > .libs/libtexinfo.dll.a, do you see there entries for the functions > that the linker complains as unresolved? For example, if I look at > .libs/libtexinfo.dll.a which was built with MinGW from Texinfo 7.3, I > see this for rpl_free: > > /tta/C/.libs/libtexinfo.dll.a:libtexinfo_1_dll_d000775.o: U > __head_libtexinfo_1_dll > /tta/C/.libs/libtexinfo.dll.a:libtexinfo_1_dll_d000775.o:00000000 I > __imp__rpl_free > /tta/C/.libs/libtexinfo.dll.a:libtexinfo_1_dll_d000775.o:00000000 T > _rpl_free > /tta/C/.libs/libtexinfo.dll.a:libtexinfo_1_dll_d000774.o:00000000 i .idata$4 > /tta/C/.libs/libtexinfo.dll.a:libtexinfo_1_dll_d000774.o:00000000 i .idata$5 > /tta/C/.libs/libtexinfo.dll.a:libtexinfo_1_dll_d000774.o:00000000 i .idata$6 > /tta/C/.libs/libtexinfo.dll.a:libtexinfo_1_dll_d000774.o:00000000 i .idata$7 > /tta/C/.libs/libtexinfo.dll.a:libtexinfo_1_dll_d000774.o:00000000 t .text > > The meaning of symbols U, I, T, etc. is explained in the GNU Binutils > manual, in the node "nm". The important parts above are the > __imp__rpl_free one and the _rpl_free one. > > Do you see something similar in tre .dll.a file in your tree?
I do not have an easy access to the tree, as it is in the CI. If I get the libtexinfo.dll.a file in an archive to GNU/Linux, do you know if nm from GNU/Linux will read the libtexinfo.dll.a file symbols/information correctly? -- Pat
