[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Bug default/24396] New: [abidiff] Symbols not filtered out with --headers-dir1
Hello,
[...]
> The documentation of --headers-dirN states:
>
> The tool will thus filter out ABI changes on types that are not defined in
> public headers.
Indeed. It filters it on *types*, not on function, variables or symbol
names, for instance (unfortunately).
> If we do not use the option -fvisibility=hidden, it seems the symbols not
> defined in public headers are not dropped from the abidiff report.
Indeed. The problem here is that symbols (unlike types) are not
*defined* in public headers. Rather, they are defined in source files
elsewhere.
So, --header-dirN does affect types only, unfortunately.
[...]
> If I run abidiff with these 2 versions:
>
> abidiff libstac.so.1 libstac.so.2
> abidiff --headers-dir1=./include --headers-dir2=./include libstac.so.1
> libstac.so.2
> abidiff --drop-private-types --headers-dir1=./include --headers-dir2=./include
> libstac.so.1 libstac.so.2
>
> I have the following report:
> Functions changes summary: 0 Removed, 0 Changed, 0 Added function
> Variables changes summary: 1 Removed, 0 Changed, 0 Added variable
>
> 1 Removed variable:
>
> 'static const unsigned int PersonImpl::kDefaultAge'
> {_ZN10PersonImpl11kDefaultAgeE}
>
Right. To filter that change report out, either you'll have to use
-fvisibility=hidden at compile time, or provide libabigail with a
suppression specification to filter out changes pertaining to things
that are conceptually private to the implementation.
I hope this is helpful.
Thank you for the time you are spending using libabigail tools and
providing feedback. This is really appreciated.
Cheers,
--
Dodji