On Sun, Oct 06, 2024 at 09:17:38PM +0300, Eli Zaretskii wrote:
> > Date: Sun, 6 Oct 2024 20:04:20 +0200
> > From: Patrice Dumas <[email protected]>
> > 
> > In Bruno CI, previously the cygwin32 tests did not really check the XS/C
> > code, as iconv was missing.  Now it is installed and the XS/C code is
> > tested.  There are many errors of missing symbols when linking,
> > corresponding to all the symbols that are in libtexinfo.dll.a, as if
> > libtexinfo.dll.a was not used in the link, although it is:
> > 
> > https://github.com/gnu-texinfo/ci-check/actions/runs/11203321204/job/31140537432
> > libtool: link: gcc -shared  main/.libs/libtexinfoxs_la-build_perl_info.o 
> > main/.libs/libtexinfoxs_la-get_perl_info.o 
> > main/.libs/libtexinfoxs_la-options_get_perl.o   
> > -L/usr/lib/perl5/5.32/i686-cygwin-threads-64int/CORE -lperl 
> > ./.libs/libtexinfo.dll.a  -ggdb -O2 -fstack-protector-strong -O3   -o 
> > .libs/cygtexinfoxs-0.dll -Wl,--enable-auto-image-base -Xlinker --out-implib 
> > -Xlinker .libs/libtexinfoxs.dll.a
> >  /usr/lib/gcc/i686-pc-cygwin/11/../../../../i686-pc-cygwin/bin/ld: 
> > main/.libs/libtexinfoxs_la-build_perl_info.o: in function `convert_error':
> >  
> > /cygdrive/d/a/ci-check/ci-check/texinfo-7.1.90-20241006/build/tp/Texinfo/XS/../../../../tp/Texinfo/XS/main/build_perl_info.c:1180:
> >  undefined reference to `newSVpv_utf8'
> > ....
> >  /usr/lib/gcc/i686-pc-cygwin/11/../../../../i686-pc-cygwin/bin/ld: 
> > main/.libs/libtexinfoxs_la-build_perl_info.o: in function 
> > `element_to_perl_hash':
> >  
> > /cygdrive/d/a/ci-check/ci-check/texinfo-7.1.90-20241006/build/tp/Texinfo/XS/../../../../tp/Texinfo/XS/main/build_perl_info.c:801:
> >  undefined reference to `element_command_name'
> 
> This looks to me like a simple problem of library order: the
> newSVpv_utf8 function is from Perl, no?  The above command has -lperl
> before libtexinfo.dll.a, whereas it should probably be after it, no?
> GNU ld is a single-pass linker, so the order matters.

Even though newSVpv_utf8 looks a lot like a Perl function/macro, for
some reason it is not in Perl, so we added it in libtexinfo.

> If this is not the problem, can you tell which library defines each of
> these "undefined" functions?

They are all in libtexinfo.  You are right that libtexinfo itself
requires some Perl symbols, so maybe this is the issue, although it is
not apparent from the messages.

-- 
Pat

Reply via email to