[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