V Thu, Mar 03, 2022 at 07:44:45AM -0600, Richard Shaw napsal(a): > In this instance, it's not clear to me whether sub-type changes are ABI > breaking or not... > > $ fedabipkgdiff --from fc37 codec2-1.0.3-1.fc37.x86_64.rpm > Comparing the ABI of binaries between codec2-1.0.1-2.fc36.x86_64.rpm and > codec2-1.0.3-1.fc37.x86_64.rpm: > > ================ changes of 'libcodec2.so.1.0'=============== > Functions changes summary: 0 Removed, 1 Changed, 5 Added functions > Variables changes summary: 0 Removed, 0 Changed, 0 Added variable > > 5 Added functions: > > [A] 'function void fdmdv_48_to_8(float*, float*, int)' > {fdmdv_48_to_8} > [A] 'function void fdmdv_48_to_8_short(short int*, short int*, int)' > {fdmdv_48_to_8_short} > [A] 'function void fdmdv_8_to_48(float*, float*, int)' > {fdmdv_8_to_48} > [A] 'function void fdmdv_8_to_48_short(short int*, short int*, int)' > {fdmdv_8_to_48_short} > [A] 'function void mbest_precompute_weight(float*, float*, int, int)' > {mbest_precompute_weight} > > 1 function with some indirect sub-type change: > > [C] 'function void mbest_search(const float*, float*, float*, int, int, > MBEST*, int*)' at mbest.c:123:1 has some indirect sub-type changes: > parameter 3 of type 'float*' changed: > entity changed from 'float*' to 'int' > type size changed from 64 to 32 (in bits) > parameter 5 of type 'int' changed: > entity changed from 'int' to 'MBEST*' > type size changed from 32 to 64 (in bits) > parameter 6 of type 'MBEST*' changed: > in pointed to type 'struct MBEST': > entity changed from 'struct MBEST' to 'int' > type size changed from 128 to 32 (in bits) > parameter 7 of type 'int*' was removed > > ================ end of changes of 'libcodec2.so.1.0'=============== > > Do I need to rebuild deps or not? > I have no idea what "indirect sub-type" means. Maybe it means that the function is called indirectly by other functions. If you look at the header files, there is no mbest_search() declaration. Hence mbest_search() cannot be part of public API. Therefore I believe you don't need to rebuild other packages because none of them should call it. Instead you could recommend upstream to hide that symbol from a symbol table using an linker script or a GCC-specific function attribute visibility("hidden"). That way nobody will be able to call it and various static scanners like the abidiff won't trip over it. As a reasult it would disappear from this output: $ nm -D /usr/lib64/libcodec2.so |grep mbest_search 0000000000024790 T mbest_search 0000000000024860 T mbest_search450 -- Petr
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ 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