V Mon, Oct 10, 2022 at 04:31:31PM +0000, Mattia Verga via devel napsal(a):
> Il 10/10/22 15:46, Petr Pisar ha scritto:
> > I'm now facing a build failure on EPEL, which I can't figure out:
> >> /usr/bin/ld: lilxml.o (symbol from plugin): undefined reference to
> >> symbol 'xmlMalloc@@LIBXML2_2.4.30'
> >> /usr/bin/ld: /usr/lib64/libxml2.so.2: error adding symbols: DSO missing
> >> from command line
> >>
> > That says that lilxml.o object file (found in a static liblilxml.a library)
> > refers to an xmlMalloc symbol. But no library (the -l options) passed to the
> > linker command:
> >
> > gcc -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now 
> > -specs=/usr/lib/rpm/redhat/redhat-hardened-ld 
> > -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -L/usr/lib -L/opt/X11/lib 
> > -L../../libastro -L../../libip -L../../liblilxml -o xephem aavso.o 
> > annotmenu.o broadcast.o calmenu.o closemenu.o compiler.o coordsmenu.o 
> > datamenu.o db.o dbmenu.o earthmap.o earthmenu.o fallbacks.o favmenu.o 
> > formats.o fsmenu.o gallerymenu.o glance.o gsc.o gscnet.o helpmenu.o 
> > homeio.o hznmenu.o indimenu.o imregmenu.o jpeg2pm.o jupmenu.o listmenu.o 
> > mainmenu.o marsmenu.o marsmmenu.o moonmenu.o moviemenu.o msgmenu.o 
> > netmenu.o objmenu.o obslog.o patchlevel.o plot_aux.o plotmenu.o 
> > preferences.o progress.o ps.o query.o rotated.o satmenu.o saveres.o scope.o 
> > sites.o skybinary.o skyeyep.o skyfifos.o skyfiltmenu.o skyfits.o skyhist.o 
> > skyip.o skylist.o skytoolbar.o skyviewmenu.o solsysmenu.o splash.o 
> > srchmenu.o sunmenu.o time.o tips.o trailmenu.o uranusmenu.o ucac.o usno.o 
> > versionmenu.o webdbmenu.o xe2.o xe3.o xephem.o xmisc.o -lXm -lXt -lXext 
> > -lXmu -lX11 -lastro -lip -llilxml -ljpeg -lpng -lz -lm -lssl
> >
> > actually defines that symbol. Thus the linker reported an error.
> >
> > For a user's convenience, the linker searched system libraries
> > and found /usr/lib64/libxml2.so.2 to be defining the system.
> >
> > Hence a solution is patch a xephem build script in order to add -lxml2 to 
> > the
> > linker flags used when linking xephem executable. You should report this bug
> > to xephem upstream.
> >
> > -- Petr
> 
> Thanks!
> 
> Still, I'm surprised I hit this only in EPEL, while on Fedora everything
> was built fine.
> 
I looked at the sources. xmlMalloc() function is declared in liblilxml/lilxml.h:

    /* install alternatives to malloc/realloc/free */
    extern void xmlMalloc (void *(*newmalloc)(size_t size),
        void *(*newrealloc)(void *ptr, size_t size), void (*newfree)(void 
*ptr));

and defined in liblilxml/lilxml.c:

    /* install new version of malloc/realloc/free.
     * N.B. don't call after first use of any other lilxml function
     */
    void
    xmlMalloc (void *(*newmalloc)(size_t size),
           void *(*newrealloc)(void *ptr, size_t size),
           void (*newfree)(void *ptr))
    {
        mymalloc = newmalloc;
        myrealloc = newrealloc;
        myfree = newfree;
    }

There is no other place where the function is called or referred.

Because the function is defined in lilxml.c which is built into liblilxml.a
and then linked to xephem executable, xephem should not link to libxml2. It
has its own xmlMalloc() definition.

Question why EPEL9 reports that error I cannot answer. Maybe some bug in
gcc or binutils.

-- Petr

Attachment: signature.asc
Description: PGP signature

_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to