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
signature.asc
Description: PGP signature
_______________________________________________ devel mailing list -- [email protected] To unsubscribe send an email to [email protected] 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/[email protected] Do not reply to spam on the list, report it: https://pagure.io/fedora-infrastructure
