> 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? Caveat: I know very little about Cygwin, I just think that the requirements for DLLs and their import libraries are the same as for MinGW, because they are mandated by the PE binary format used by Windows. HTH
