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

Reply via email to