Filter top cv qualifier changes on function parameter types
authorDodji Seketeli <dodji@redhat.com>
Fri, 9 Jun 2017 08:37:59 +0000 (10:37 +0200)
committerDodji Seketeli <dodji@redhat.com>
Mon, 3 Jul 2017 15:45:47 +0000 (17:45 +0200)
commitc0bfc403dcffed0d0d4f471e2e5c7bad79577b25
tree2f16b779ca905f63f24fe2ab53c051a4521f1ac0
parent698f405740b2df441427cfba3dcd43ab853dde1d
Filter top cv qualifier changes on function parameter types

When the type of a function parameter sees its top CV qualifier
change, that should never negatively affect ABI compliance.

So this patch filters out top cv qualifier changes on function
parameter types, by default.

* include/abg-comparison.h (enum diff_category): Add a new
FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY enumerator.  "Or" the
enumerator to the EVERYTHING_CATEGORY enumerator.
* src/abg-comp-filter.cc (has_fn_parm_type_cv_qual_change): Define
new static function.
(categorize_harmless_diff_node): Categorize changes to top cv
qualifiers on function parameter types into the new
FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY.
* src/abg-comparison.cc (get_default_harmless_categories_bitmap):
Add the new FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY category to the
set of harmless categories.
(operator<<(ostream&, diff_category)): Adjust to serialize
the new FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY.
* tests/data/test-diff-filter/libtest40-v0.so: New test input binary.
* tests/data/test-diff-filter/libtest40-v1.so: Likewise.
* tests/data/test-diff-filter/test40-report-0.txt: New test
reference output.
* tests/data/test-diff-filter/test40-v0.cc: Source code of the
test binary above.
* tests/data/test-diff-filter/test40-v1.cc: Likewise.
* tests/data/Makefile.am: Add the new test material above to
source distribution.
* tests/test-diff-filter.cc (in_out_specs): Add new binaries to
compare.
* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
Adjust.
* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
Likewise.
* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
Likewise.
* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt:
Likewise.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
14 files changed:
include/abg-comparison.h
src/abg-comp-filter.cc
src/abg-comparison.cc
tests/data/Makefile.am
tests/data/test-diff-filter/libtest40-v0.so [new file with mode: 0755]
tests/data/test-diff-filter/libtest40-v1.so [new file with mode: 0755]
tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt
tests/data/test-diff-filter/test40-report-0.txt [new file with mode: 0644]
tests/data/test-diff-filter/test40-v0.cc [new file with mode: 0644]
tests/data/test-diff-filter/test40-v1.cc [new file with mode: 0644]
tests/test-diff-filter.cc