Summary: | failing to suppress added aliased function reports for C++ | ||
---|---|---|---|
Product: | libabigail | Reporter: | Michi Henning <michi.henning> |
Component: | default | Assignee: | Dodji Seketeli <dodji> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | libabigail |
Priority: | P2 | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Host: | Target: | ||
Build: | Last reconfirmed: | ||
Attachments: |
Dump files and suppressions file
A version of the committed patch that fixes the issue, but without regression tests |
> I have a suppressions file like so: > > [suppress_function] > name_regexp = boost::.* > change_kind = added-function > > [suppress_function] > name_regexp = std::.* > change_kind = added-function > > [suppress_function] > name_regexp = unity::scopes::testing::.* > change_kind = added-function [...] > The std and unity::scopes::testing suppressions match many, but not > all, of the functions in their respective namespaces, so the output > still shows 33 added functions. Before I risk getting some false explanation, could you tell me if the suppression specificication below works? [suppress_function] name_regexp = boost::.* change_kind = added-function allow_other_aliases = false [suppress_function] name_regexp = std::.* change_kind = added-function allow_other_aliases = false [suppress_function] name_regexp = unity::scopes::testing::.* change_kind = added-function allow_other_aliases = false (Note the new allow_other_aliases property that got added) > It's not clear to me why. Again, we'd have needed more feedback from the tool here :( But then if the supressions above wortk I think I have an idea of what the issue is. I just tried to reproduce, but can't now. (I'm on a different machine, and it's late. I may have made a mistake.) Do you see the problem I described with the attached files? After adding allow_other_aliases = false, the additional symbols are suppressed, thanks! I find this surprising though; if I say "suppress every function and the std:: namespace", that's just what should happen. This is a bug, indeed. The change report about the added function should have been suppressed by that suppression specification that you provided. The use of the undocumented "allow_other_aliases = false" should be considered as a temporary workaround. The problem should be fixed in the master branch of the git repository by commit https://sourceware.org/git/gitweb.cgi?p=libabigail.git;a=commit;h=1eecd89ee1fca9a5a5c4dc656c88dd9a739c5683. The commit log of that patch does have an extensive explanation of the underlying problem, in case you are interested. You should thus, eventually, be able to do away with the use of the undocumented "allow_other_aliases" property. Sorry for the inconvenience. Created attachment 8985 [details]
A version of the committed patch that fixes the issue, but without regression tests
I am attaching a version of the committed patch, but without regression testing material. This makes it easy to back-port the patch, without having to carry binary content (present in the regression testing bits of the committed patch) around.
|
Created attachment 8980 [details] Dump files and suppressions file I'm risking making a fool of myself again. Maybe I made a mistake... I have a suppressions file like so: [suppress_function] name_regexp = boost::.* change_kind = added-function [suppress_function] name_regexp = std::.* change_kind = added-function [suppress_function] name_regexp = unity::scopes::testing::.* change_kind = added-function Command is: $ abidiff --no-unreferenced-symbols --suppressions suppressions libunity-scopes_1.0.0.abi.xml libunity-scopes_1.0.3.abi.xml The suppressions are there to get rid of function template instantiations for things that were added after the baseline ABI. The suppressions work to a large degree. The boost suppression gets rid of all boost added functions. The std and unity::scopes::testing suppressions match many, but not all, of the functions in their respective namespaces, so the output still shows 33 added functions. It's not clear to me why.