On Sun, Jan 23, 2022 at 4:58 AM Vitaly Zaitsev via devel <devel@xxxxxxxxxxxxxxxxxxxxxxx> wrote:
On 22/01/2022 17:22, Jakub Jelinek wrote:
> The long double change is an ABI change, so this is kind of expected.
abidiff automatic test found no ABI changes between 8.0 and 8.1.
I think you might be missing the point.
The long double format changed (on ppc64le only?) between gcc-11 and gcc-12.
Compiling something that uses fmt (e.g. ceph) with gcc-12 now produces references (calls) to:
int fmt::v8::detail::format_float<__ieee128>(__ieee128, int, fmt::v8::detail::float_specs, fmt::v8::detail::buffer<char>&)
and
int fmt::v8::detail::snprintf_float<__ieee128>(__ieee128, int, fmt::v8::detail::float_specs, fmt::v8::detail::buffer<char>&)
Those functions are not in the libfmt.so that was last successfully built with gcc-11.
That's because when fmt was compiled with gcc-11, the symbols were:
int fmt::v8::detail::format_float<__float128>(__float128, int, fmt::v8::detail::float_specs, fmt::v8::detail::buffer<char>&)
and
int fmt::v8::detail::snprintf_float<__float128>(__float128, int, fmt::v8::detail::float_specs, fmt::v8::detail::buffer<char>&)
That is an ABI change, no matter what abidiff might be telling you. (It's a change we knew was coming though.)
And going forward, anything (e.g. ceph) compiled with gcc-11 is not going to work with fmt and libfmt.so compiled with gcc-12 because of the ABI change.
If you already understood all this then I apologize for telling you something you already know. ;-)
Regards
Kaleb
_______________________________________________ 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 Do not reply to spam on the list, report it: https://pagure.io/fedora-infrastructure