Re: Lost ELF library auto-provides since mass rebuild

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



* Daniel P. Berrangé:

> This is in relation to this bug
>
> https://bugzilla.redhat.com/show_bug.cgi?id=1862745
>
> The last but one build of libgphoto have auto-provides for the ELF
> libraries:
>
> libgphoto2 = 2.5.24-2.fc33
> libgphoto2(x86-64) = 2.5.24-2.fc33
> libgphoto2.so.6()(64bit)
> libgphoto2_port.so.12()(64bit)
> libgphoto2_port.so.12(LIBGPHOTO2_5_0)(64bit)
> libgphoto2_port.so.12(LIBGPHOTO2_INTERNAL)(64bit)
>
> any new build both in the mass rebuild and any scratch builds I try
> looses some of these auto deps leaving just
>
> libgphoto2 = 2.5.24-3.fc33
> libgphoto2(x86-64) = 2.5.24-3.fc33
> libgphoto2.so.6()(64bit)
> libgphoto2_port.so.12()(64bit)
>
>
> Was there any change people are aware of that would explain this and
> suggest what we need todo to get these deps back in libghoto ?

I think this isn't the real issue.  As far as I can tell, all the symbol
versioning information is gone.  The RPM dependencies are correct, but
the ABI is not. 8-p

configure.ac has this:

AC_MSG_CHECKING([for asm .symver support])
AC_COMPILE_IFELSE([dnl
        AC_LANG_PROGRAM([[]],[[
                int f1() { }
                int f2() { }
                asm(".symver f1, f@VER1");
                asm(".symver f2, f@@VER2");
                int main(int argc, char **argv) { }
        ]])dnl
],[
        AC_DEFINE([HAVE_ASM_SYMVERS],1,[Define if there is asm .symver support.])
        VERSIONMAPLDFLAGS="-Wl,--version-script=\$(srcdir)/libgphoto2.ver"
        AC_MSG_RESULT(yes)
],[
        VERSIONMAPLDFLAGS=""
        AC_MSG_RESULT(no)
])
AC_SUBST(VERSIONMAPLDFLAGS)

And build.log shows:

checking for asm .symver support... no

The HAVE_ASM_SYMVERS macro is apparently unused, but setting
VERSIONMAPLDFLAGS looks *very* relevant.

The cause seems to be this:

/tmp/ccAbnnro.s: Assembler messages:
/tmp/ccAbnnro.s: Error: invalid attempt to declare external version name
as default in symbol `f@@VER2'

It's LTO-related in the sense that f1 & f2 get different symbols with
LTO.  This fixes the test:

                int __attribute__ ((externally_visible)) f1() { }
                int __attribute__ ((externally_visible)) f2() { }
                asm(".symver f1, f@VER1");
                asm(".symver f2, f@@VER2");
                int main(int argc, char **argv) { }

Not sure this was missed by Jeff's config.log differ.  Maybe its
binutils version was too old?

Thanks,
Florian
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
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@xxxxxxxxxxxxxxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux