* 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?
This package needs to opt-out of LTO.
libgphoto2 passed its control and LTO builds as well as the config.h check. So
I'm not sure what went wrong here.
jeff