[C] 'function void foo(foo*)' at test-v0.c:8:1 has some indirect sub-type changes:
parameter 1 of type 'foo*' has sub-type changes:
in pointed to type 'struct foo' at test-v1.c:1:1:
type size changed from 32 to 64 (in bits)
1 data member insertion:
'char member1', at offset 32 (in bits) at test-v1.c:4:1
1 data member change:
'char pad[]' offset changed from 32 to 40 (in bits) (by +8 bits)
returned value: 4
$
This patch allows users to suppress this change report using a new
property value to the "has_data_member_inserted_at" property of the
[suppress_type] directive. The resulting suppression specification
reads:
The patch adds new test cases and updates the documentation to add a
mention to the new offset_of_flexible_array_data_member named
boundary.
* doc/manuals/libabigail-concepts.rst: Add documentation for the
new "offset_of_flexible_array_data_member" named boundary.
* include/abg-fwd.h (has_flexible_array_data_member): Declare new
function.
* src/abg-ir.cc (has_flexible_array_data_member): Define it.
* include/abg-suppression.h
(type_suppression::insertion_range::named_boundary_sptr): Define
new typedef.
(type_suppression::insertion_range::create_named_boundary): Declare
new static function member function.
(is_named_boundary): Declare new function.
(class type_suppression::insertion_range::named_boundary): Declare
new type.
* src/abg-suppression.cc
(struct type_suppression::insertion_range::named_boundary::priv):
Define new private type.
(OFFSET_OF_FLEXIBLE_ARRAY_DATA_MEMBER_STRING): Define new static
constant string getter function.
(type_suppression::insertion_range::create_named_boundary): Define
new static member function.
(is_named_boundary): Define new function.
(read_type_suppression): Parse the new
"offset_of_flexible_array_data_member" named boundary.
(type_suppression::insertion_range::eval_boundary): Evaluate the
new "offset_of_flexible_array_data_member" named boundary.
* tests/data/test-abidiff-exit/test-fam1-report-[1-5].txt: New
reference test output.
* tests/data/test-abidiff-exit/test-fam2-report-1.txt: Likewise.
* tests/data/test-abidiff-exit/test-fam1-suppr-[1-4].abignore: New test
suppression specification.
* tests/data/test-abidiff-exit/test-fam{1,2}-v{0,1}.o: New test input
binaries.
* tests/data/test-abidiff-exit/test-fam{1,2}-v{0,1}.c: Source code of
the test input binaries.
* tests/data/Makefile.am: Add the new test material to the source
distribution.
* tests/test-abidiff-exit.cc (in_out_specs): Add the new test
input to this harness.