suppr: Support has_data_member and has_data_member_regexp properties
authorDodji Seketeli <dodji@redhat.com>
Thu, 26 Jan 2023 16:49:41 +0000 (17:49 +0100)
committerDodji Seketeli <dodji@redhat.com>
Wed, 1 Mar 2023 12:46:41 +0000 (13:46 +0100)
commit153b37a164a0cd9e0136e8393a7a2ac5e34f8fed
treeb25d5da8cb86b2dc446adc82dc17ed1d994d1eb0
parent2ead575e7674d83c18487fe4dbaf4d4e390b9339
suppr: Support has_data_member and has_data_member_regexp properties

In the [supress_type] directive, this patch adds support for two new
properties:

* has_data_data_member = {foo, bar, blah}
  Suppresses change reports involving a type which has data members
  with names specified by the value of this property.

* has_data_member_regexp = some-regexp
  Suppresses change reports involving a type which has data members
  with names specified by the regular expression given as a value of
  this property.

* include/abg-fwd.h (string_set_type): Define new typedef.
* src/abg-suppression-priv.h
* include/abg-suppression.h
(type_suppression::{get,set}_potential_data_member_names[_regex_str]):
Declare new data member.
(type_suppression::priv::{potential_data_members_,
potential_data_members_regex_str_,
potential_data_members_regex_}): Define new data members.
(type_suppression::priv::{get,set}_potential_data_member_names_regex):
Define new member functions.
* src/abg-suppression.cc
(type_suppression::{get,set}_potential_data_member_names): Define new
member functions.
(type_suppression::{get,set}_potential_data_member_names_regex_str):
Likewise.
(type_suppression::suppresses_diff): Implement suppression using
the new "has_data_member" and "has_data_member_regexp" properties.
(read_type_suppression): Support parsing the new "has_data_member"
and "has_data_member_regexp" properties of the type suppression
directive.
* tests/data/test-diff-suppr/has-data-member-[1-7].suppr: New
suppression specifications for test purposes.
* tests/data/test-diff-suppr/test-has-data-member-output-{1,2}.txt:
New reference test outputs.
* tests/data/test-diff-suppr/test-has-data-member-v{0,1}.cc:
Source code of new input binary tests.
* tests/data/test-diff-suppr/test-has-data-member-v{0,1}.o: New
binary test inputs.
* tests/data/Makefile.am: Add the test inputs below to source
distribution.
* tests/test-diff-suppr.cc (in_out_specs): Add the new test inputs
above to this test harness.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
20 files changed:
doc/manuals/libabigail-concepts.rst
include/abg-fwd.h
include/abg-suppression.h
src/abg-suppression-priv.h
src/abg-suppression.cc
tests/data/Makefile.am
tests/data/test-diff-suppr/has-data-member-1.suppr [new file with mode: 0644]
tests/data/test-diff-suppr/has-data-member-2.suppr [new file with mode: 0644]
tests/data/test-diff-suppr/has-data-member-3.suppr [new file with mode: 0644]
tests/data/test-diff-suppr/has-data-member-4.suppr [new file with mode: 0644]
tests/data/test-diff-suppr/has-data-member-5.suppr [new file with mode: 0644]
tests/data/test-diff-suppr/has-data-member-6.suppr [new file with mode: 0644]
tests/data/test-diff-suppr/has-data-member-7.suppr [new file with mode: 0644]
tests/data/test-diff-suppr/test-has-data-member-output-1.txt [new file with mode: 0644]
tests/data/test-diff-suppr/test-has-data-member-output-2.txt [new file with mode: 0644]
tests/data/test-diff-suppr/test-has-data-member-v0.cc [new file with mode: 0644]
tests/data/test-diff-suppr/test-has-data-member-v0.o [new file with mode: 0644]
tests/data/test-diff-suppr/test-has-data-member-v1.cc [new file with mode: 0644]
tests/data/test-diff-suppr/test-has-data-member-v1.o [new file with mode: 0644]
tests/test-diff-suppr.cc