Bug 29340 - Add support for Ada range types
authorDodji Seketeli <dodji@redhat.com>
Thu, 30 Mar 2023 16:24:01 +0000 (18:24 +0200)
committerDodji Seketeli <dodji@redhat.com>
Fri, 31 Mar 2023 21:14:01 +0000 (23:14 +0200)
Libabigail doesn't yet support generic range types like in Ada.
Ranges are supported as a kind of implementation detail of array
types.  But then its use like in the construct below is not supported:

    type My_Int is range 0 .. 5;
    function My_Function return My_Int;

Here, the integer type "My_Int" can take the discrete values that go
from 0 to 5.  It's represented in the DWARF debug info as being a
range type of length 6 and whose underlying type has a size of 8 bits.

This patch adds support for a range type to be (de-)serialized from
and to abixml, diffed, diff-analyzed and diff-reported.

The ABIXML version number has been bumped from 2.1 to 2.2 accordingly.

* configure.ac: Bump the abixml version to 2.2 from 2.1
* include/abg-comparison.h (diff_maps::get_subrange_diff_map):
Declare new member functions.
(class subrange_diff): Define new class.
(subrange_diff_sptr): Define new typedef.
(compute_diff): New overload for subrange_diff.
(is_subrange_diff): Declare new function.
* include/abg-ir.h (equals): Declare an overload for
subrange_type.
* include/abg-reporter.h (reporter_base::report): Declare an
overload for subrange_diff.
(default_reporter::report_underlying_changes_of_qualified_type):
Declare member function.
(leaf_reporter::report): Declare and overload for subrange_diff.
Declare new member function.
* include/abg-tools-utils.h
(get_anonymous_subrange_internal_name_prefix): Declare new function.
* src/abg-comparison-priv.h (struct subrange_diff::priv): Define
new type.
* src/abg-comparison.cc (diff_maps::priv::subrange_diff_map_):
Define data member.
(diff_maps::get_subrange_diff_map): Define member function.
(is_subrange_diff, compute_diff): Define new functions.
(compute_diff_for_types): Handle array_type::subrange_type types.
(subrange_diff::{subrange_diff, first_subrange, second_subrange,
get_pretty_representation, has_changes, has_local_changes, report,
chain_into_hierarchy}): Define member functions.
(diff_maps::insert_diff_node): Handle subrange diff nodes.
(corpus_diff::priv::count_leaf_type_changes): Count subranges diff
nodes.
* src/abg-default-reporter.cc (default_reporter::report): Define
an overload for subrange_diff.
* src/abg-ir.cc (has_generic_anonymous_internal_type_name):
Support subrange types.
* src/abg-leaf-reporter.cc (report_type_changes_from_diff_maps):
Report about subrange types.
(leaf_reporter::report): Define and overload for subrange_diff
nodes.
* src/abg-reader.cc (build_subrange_type): Add a boolean to add
the subrange type to the current scope.
(build_array_type_def): Adjust when calling build_subrange_type.
(build_type): Support building subrange types.
* src/abg-reporter-priv.cc (represent): Define a new overload for
the subrange_diff type.
* src/abg-reporter-priv.h (represent): Declare a new overload for
the subrange_diff type.
* src/abg-tools-utils.cc (ANONYMOUS_SUBRANGE_INTERNAL_NAME)
(ANONYMOUS_SUBRANGE_INTERNAL_NAME_LEN): Define new static const
variables.
(get_anonymous_subrange_internal_name_prefix): Define new
function.
* src/abg-writer.cc (write_array_subrange_type): Define new static
function.
(write_decl): Support emitting subrange_types.
* tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-1.txt:
New reference output.
* tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-2.txt:
Likewise.
* tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v0/test1.ad{b,s}:
Source code of the input binary below.
* tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v0/test1.o:
New input test.
* tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v1/test1.ad{b,s}:
Source code of the input binary below.
* tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v1/test1.o:
New input test.
* tests/data/Makefile.am: Add the new test files to source
distributions.
* tests/test-abidiff-exit.cc (in_out_specs): Add the new tests
input above to this test harness.
* tests/data/test-annotate/PR29443-missing-xx.o.annotated.abi:
Adjust.
* tests/data/test-annotate/libtest23.so.abi: Likewise.
* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
* tests/data/test-annotate/test-anonymous-members-0.o.abi:
Likewise.
* tests/data/test-annotate/test0.abi: Likewise.
* tests/data/test-annotate/test1.abi: Likewise.
* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
Likewise.
* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
Likewise.
* tests/data/test-annotate/test2.so.abi: Likewise.
* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
Likewise.
* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
* tests/data/test-annotate/test3.so.abi: Likewise.
* tests/data/test-annotate/test4.so.abi: Likewise.
* tests/data/test-annotate/test5.o.abi: Likewise.
* tests/data/test-annotate/test6.so.abi: Likewise.
* tests/data/test-annotate/test7.so.abi: Likewise.
* tests/data/test-annotate/test8-qualified-this-pointer.so.abi:
Likewise.
* tests/data/test-read-btf/test0.o.abi: Likewise.
* tests/data/test-read-btf/test1.o.abi: Likewise.
* tests/data/test-read-ctf/PR27700/test-PR27700.abi: Likewise.
* tests/data/test-read-ctf/test-PR26568-1.o.abi: Likewise.
* tests/data/test-read-ctf/test-PR26568-2.o.abi: Likewise.
* tests/data/test-read-ctf/test-alias.o.abi: Likewise.
* tests/data/test-read-ctf/test-ambiguous-struct-A.o.hash.abi:
Likewise.
* tests/data/test-read-ctf/test-ambiguous-struct-B.o.hash.abi:
Likewise.
* tests/data/test-read-ctf/test-anonymous-fields.o.abi: Likewise.
* tests/data/test-read-ctf/test-array-mdimension.abi: Likewise.
* tests/data/test-read-ctf/test-array-of-pointers.abi: Likewise.
* tests/data/test-read-ctf/test-array-size.abi: Likewise.
* tests/data/test-read-ctf/test-bitfield-enum.abi: Likewise.
* tests/data/test-read-ctf/test-bitfield.abi: Likewise.
* tests/data/test-read-ctf/test-callback.abi: Likewise.
* tests/data/test-read-ctf/test-callback2.abi: Likewise.
* tests/data/test-read-ctf/test-conflicting-type-syms-a.o.hash.abi:
Likewise.
* tests/data/test-read-ctf/test-conflicting-type-syms-b.o.hash.abi:
Likewise.
* tests/data/test-read-ctf/test-const-array.abi: Likewise.
* tests/data/test-read-ctf/test-dynamic-array.o.abi: Likewise.
* tests/data/test-read-ctf/test-enum-many.o.hash.abi: Likewise.
* tests/data/test-read-ctf/test-enum-symbol.o.hash.abi: Likewise.
* tests/data/test-read-ctf/test-enum.o.abi: Likewise.
* tests/data/test-read-ctf/test-fallback.abi: Likewise.
* tests/data/test-read-ctf/test-forward-type-decl.abi: Likewise.
* tests/data/test-read-ctf/test-functions-declaration.abi:
Likewise.
* tests/data/test-read-ctf/test-linux-module.abi: Likewise.
* tests/data/test-read-ctf/test-list-struct.abi: Likewise.
* tests/data/test-read-ctf/test0.abi: Likewise.
* tests/data/test-read-ctf/test0.hash.abi: Likewise.
* tests/data/test-read-ctf/test1.so.abi: Likewise.
* tests/data/test-read-ctf/test1.so.hash.abi: Likewise.
* tests/data/test-read-ctf/test2.so.abi: Likewise.
* tests/data/test-read-ctf/test2.so.hash.abi: Likewise.
* tests/data/test-read-ctf/test3.so.abi: Likewise.
* tests/data/test-read-ctf/test3.so.hash.abi: Likewise.
* tests/data/test-read-ctf/test4.so.abi: Likewise.
* tests/data/test-read-ctf/test4.so.hash.abi: Likewise.
* tests/data/test-read-ctf/test5.o.abi: Likewise.
* tests/data/test-read-ctf/test7.o.abi: Likewise.
* tests/data/test-read-ctf/test8.o.abi: Likewise.
* tests/data/test-read-ctf/test9.o.abi: Likewise.
* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
Likewise.
* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
* tests/data/test-read-dwarf/PR24378-fn-is-not-scope.abi:
Likewise.
* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
Likewise.
* tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Likewise.
* tests/data/test-read-dwarf/PR27700/test-PR27700.abi: Likewise.
* tests/data/test-read-dwarf/PR28584/PR28584-smv.clang.o.abi:
Likewise.
* tests/data/test-read-dwarf/PR29443-missing-xx.o.abi: Likewise.
* tests/data/test-read-dwarf/PR29692-kdelibs3-libkjava.so.1.0.0.abi:
Likewise.
* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
Likewise.
* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
* tests/data/test-read-dwarf/test-PR26568-1.o.abi: Likewise.
* tests/data/test-read-dwarf/test-PR26568-2.o.abi: Likewise.
* tests/data/test-read-dwarf/test-fallback.abi: Likewise.
* tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise.
* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
* tests/data/test-read-dwarf/test-suppressed-alias.o.abi:
Likewise.
* tests/data/test-read-dwarf/test0.abi: Likewise.
* tests/data/test-read-dwarf/test0.hash.abi: Likewise.
* tests/data/test-read-dwarf/test1.abi: Likewise.
* tests/data/test-read-dwarf/test1.hash.abi: Likewise.
* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
Likewise.
* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
Likewise.
* tests/data/test-read-dwarf/test2.so.abi: Likewise.
* tests/data/test-read-dwarf/test2.so.hash.abi: Likewise.
* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
Likewise.
* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
Likewise.
* tests/data/test-read-dwarf/test3-alias-1.so.hash.abi: Likewise.
* tests/data/test-read-dwarf/test3-alias-2.so.hash.abi: Likewise.
* tests/data/test-read-dwarf/test3-alias-3.so.hash.abi: Likewise.
* tests/data/test-read-dwarf/test3-alias-4.so.hash.abi: Likewise.
* tests/data/test-read-dwarf/test3.so.abi: Likewise.
* tests/data/test-read-dwarf/test3.so.hash.abi: Likewise.
* tests/data/test-read-dwarf/test4.so.abi: Likewise.
* tests/data/test-read-dwarf/test4.so.hash.abi: Likewise.
* tests/data/test-read-dwarf/test5.o.abi: Likewise.
* tests/data/test-read-dwarf/test5.o.hash.abi: Likewise.
* tests/data/test-read-dwarf/test6.so.abi: Likewise.
* tests/data/test-read-dwarf/test6.so.hash.abi: Likewise.
* tests/data/test-read-dwarf/test7.so.abi: Likewise.
* tests/data/test-read-dwarf/test7.so.hash.abi: Likewise.
* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Likewise.
* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.hash.abi: Likewise.
* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
* tests/data/test-read-write/test-crc.xml: Likewise.
* tests/data/test-read-write/test26.xml: Likewise.
* tests/data/test-read-write/test27.xml: Likewise.
* tests/data/test-read-write/test28-without-std-fns-ref.xml: Likewise.
* tests/data/test-read-write/test28-without-std-vars-ref.xml:
Likewise.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
149 files changed:
configure.ac
include/abg-comparison.h
include/abg-ir.h
include/abg-reporter.h
include/abg-tools-utils.h
src/abg-comparison-priv.h
src/abg-comparison.cc
src/abg-default-reporter.cc
src/abg-ir.cc
src/abg-leaf-reporter.cc
src/abg-reader.cc
src/abg-reporter-priv.cc
src/abg-reporter-priv.h
src/abg-tools-utils.cc
src/abg-writer.cc
tests/data/Makefile.am
tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-1.txt [new file with mode: 0644]
tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-2.txt [new file with mode: 0644]
tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v0/test1.adb [new file with mode: 0644]
tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v0/test1.ads [new file with mode: 0644]
tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v0/test1.o [new file with mode: 0644]
tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v1/test1.adb [new file with mode: 0644]
tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v1/test1.ads [new file with mode: 0644]
tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v1/test1.o [new file with mode: 0644]
tests/data/test-annotate/PR29443-missing-xx.o.annotated.abi
tests/data/test-annotate/libtest23.so.abi
tests/data/test-annotate/libtest24-drop-fns-2.so.abi
tests/data/test-annotate/libtest24-drop-fns.so.abi
tests/data/test-annotate/test-anonymous-members-0.o.abi
tests/data/test-annotate/test0.abi
tests/data/test-annotate/test1.abi
tests/data/test-annotate/test13-pr18894.so.abi
tests/data/test-annotate/test14-pr18893.so.abi
tests/data/test-annotate/test15-pr18892.so.abi
tests/data/test-annotate/test17-pr19027.so.abi
tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi
tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi
tests/data/test-annotate/test2.so.abi
tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi
tests/data/test-annotate/test21-pr19092.so.abi
tests/data/test-annotate/test3.so.abi
tests/data/test-annotate/test4.so.abi
tests/data/test-annotate/test5.o.abi
tests/data/test-annotate/test6.so.abi
tests/data/test-annotate/test7.so.abi
tests/data/test-annotate/test8-qualified-this-pointer.so.abi
tests/data/test-read-btf/test0.o.abi
tests/data/test-read-btf/test1.o.abi
tests/data/test-read-ctf/PR27700/test-PR27700.abi
tests/data/test-read-ctf/test-PR26568-1.o.abi
tests/data/test-read-ctf/test-PR26568-2.o.abi
tests/data/test-read-ctf/test-alias.o.abi
tests/data/test-read-ctf/test-ambiguous-struct-A.o.hash.abi
tests/data/test-read-ctf/test-ambiguous-struct-B.o.hash.abi
tests/data/test-read-ctf/test-anonymous-fields.o.abi
tests/data/test-read-ctf/test-array-mdimension.abi
tests/data/test-read-ctf/test-array-of-pointers.abi
tests/data/test-read-ctf/test-array-size.abi
tests/data/test-read-ctf/test-bitfield-enum.abi
tests/data/test-read-ctf/test-bitfield.abi
tests/data/test-read-ctf/test-callback.abi
tests/data/test-read-ctf/test-callback2.abi
tests/data/test-read-ctf/test-conflicting-type-syms-a.o.hash.abi
tests/data/test-read-ctf/test-conflicting-type-syms-b.o.hash.abi
tests/data/test-read-ctf/test-const-array.abi
tests/data/test-read-ctf/test-dynamic-array.o.abi
tests/data/test-read-ctf/test-enum-many.o.hash.abi
tests/data/test-read-ctf/test-enum-symbol.o.hash.abi
tests/data/test-read-ctf/test-enum.o.abi
tests/data/test-read-ctf/test-fallback.abi
tests/data/test-read-ctf/test-forward-type-decl.abi
tests/data/test-read-ctf/test-functions-declaration.abi
tests/data/test-read-ctf/test-linux-module.abi
tests/data/test-read-ctf/test-list-struct.abi
tests/data/test-read-ctf/test0.abi
tests/data/test-read-ctf/test0.hash.abi
tests/data/test-read-ctf/test1.so.abi
tests/data/test-read-ctf/test1.so.hash.abi
tests/data/test-read-ctf/test2.so.abi
tests/data/test-read-ctf/test2.so.hash.abi
tests/data/test-read-ctf/test3.so.abi
tests/data/test-read-ctf/test3.so.hash.abi
tests/data/test-read-ctf/test4.so.abi
tests/data/test-read-ctf/test4.so.hash.abi
tests/data/test-read-ctf/test5.o.abi
tests/data/test-read-ctf/test7.o.abi
tests/data/test-read-ctf/test8.o.abi
tests/data/test-read-ctf/test9.o.abi
tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi
tests/data/test-read-dwarf/PR22122-libftdc.so.abi
tests/data/test-read-dwarf/PR24378-fn-is-not-scope.abi
tests/data/test-read-dwarf/PR25007-sdhci.ko.abi
tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi
tests/data/test-read-dwarf/PR26261/PR26261-exe.abi
tests/data/test-read-dwarf/PR27700/test-PR27700.abi
tests/data/test-read-dwarf/PR28584/PR28584-smv.clang.o.abi
tests/data/test-read-dwarf/PR29443-missing-xx.o.abi
tests/data/test-read-dwarf/PR29692-kdelibs3-libkjava.so.1.0.0.abi
tests/data/test-read-dwarf/libtest23.so.abi
tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi
tests/data/test-read-dwarf/libtest24-drop-fns.so.abi
tests/data/test-read-dwarf/test-PR26568-1.o.abi
tests/data/test-read-dwarf/test-PR26568-2.o.abi
tests/data/test-read-dwarf/test-fallback.abi
tests/data/test-read-dwarf/test-libaaudio.so.abi
tests/data/test-read-dwarf/test-libandroid.so.abi
tests/data/test-read-dwarf/test-suppressed-alias.o.abi
tests/data/test-read-dwarf/test0.abi
tests/data/test-read-dwarf/test0.hash.abi
tests/data/test-read-dwarf/test1.abi
tests/data/test-read-dwarf/test1.hash.abi
tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi
tests/data/test-read-dwarf/test11-pr18828.so.abi
tests/data/test-read-dwarf/test12-pr18844.so.abi
tests/data/test-read-dwarf/test13-pr18894.so.abi
tests/data/test-read-dwarf/test14-pr18893.so.abi
tests/data/test-read-dwarf/test15-pr18892.so.abi
tests/data/test-read-dwarf/test16-pr18904.so.abi
tests/data/test-read-dwarf/test17-pr19027.so.abi
tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi
tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi
tests/data/test-read-dwarf/test2.so.abi
tests/data/test-read-dwarf/test2.so.hash.abi
tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi
tests/data/test-read-dwarf/test21-pr19092.so.abi
tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi
tests/data/test-read-dwarf/test3-alias-1.so.hash.abi
tests/data/test-read-dwarf/test3-alias-2.so.hash.abi
tests/data/test-read-dwarf/test3-alias-3.so.hash.abi
tests/data/test-read-dwarf/test3-alias-4.so.hash.abi
tests/data/test-read-dwarf/test3.so.abi
tests/data/test-read-dwarf/test3.so.hash.abi
tests/data/test-read-dwarf/test4.so.abi
tests/data/test-read-dwarf/test4.so.hash.abi
tests/data/test-read-dwarf/test5.o.abi
tests/data/test-read-dwarf/test5.o.hash.abi
tests/data/test-read-dwarf/test6.so.abi
tests/data/test-read-dwarf/test6.so.hash.abi
tests/data/test-read-dwarf/test7.so.abi
tests/data/test-read-dwarf/test7.so.hash.abi
tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi
tests/data/test-read-dwarf/test8-qualified-this-pointer.so.hash.abi
tests/data/test-read-dwarf/test9-pr18818-clang.so.abi
tests/data/test-read-write/test-crc.xml
tests/data/test-read-write/test26.xml
tests/data/test-read-write/test27.xml
tests/data/test-read-write/test28-without-std-fns-ref.xml
tests/data/test-read-write/test28-without-std-vars-ref.xml
tests/test-abidiff-exit.cc

index 56437ef594ba8a09d6b14d51a9f4ca7229d7a311..63d54ea289f9c21bca0df082a34521e20c85067d 100644 (file)
@@ -65,8 +65,16 @@ AM_SILENT_RULES([yes])
 VERSION_MAJOR=version_major
 VERSION_MINOR=version_minor
 VERSION_REVISION=0
+dnl The major version number of the abixml version should be changed
+dnl only if a new version of libabigail cannot read an old version of
+dnl abixml.  This should be very rare and should be avoided as much as
+dnl possible.
 ABIXML_VERSION_MAJOR=2
-ABIXML_VERSION_MINOR=1
+dnl The minor version number of the abixml version should be changed
+dnl each time and old version of libabigail can't handle a new version
+dnl of abixml.  Note however that when the major version number is
+dnl changed, the minor version number should be set to zero.
+ABIXML_VERSION_MINOR=2
 LIBABIGAIL_SO_CURRENT=libabigail_so_current
 LIBABIGAIL_SO_REVISION=libabigail_so_revision
 LIBABIGAIL_SO_AGE=libabigail_so_age
index 2addb7acc1d80da089b1d6dc8a0632b6129c7d5f..15ce16517d4ac1e6be20da3b15ae5e80f2cbf801 100644 (file)
@@ -548,6 +548,12 @@ public:
   string_diff_ptr_map&
   get_typedef_diff_map();
 
+  const string_diff_ptr_map&
+  get_subrange_diff_map() const;
+
+  string_diff_ptr_map&
+  get_subrange_diff_map();
+
   const string_diff_ptr_map&
   get_array_diff_map() const;
 
@@ -1409,6 +1415,61 @@ compute_diff(reference_type_def_sptr first,
             reference_type_def_sptr second,
             diff_context_sptr ctxt);
 
+
+class subrange_diff;
+
+/// A convenience typedef for a shared pointer to subrange_diff type.
+typedef shared_ptr<subrange_diff> subrange_diff_sptr;
+
+/// The abstraction of the diff between two subrange types.
+class subrange_diff : public type_diff_base
+{
+  struct priv;
+  std::unique_ptr<priv> priv_;
+
+protected:
+  subrange_diff(const array_type_def::subrange_sptr&   first,
+               const array_type_def::subrange_sptr&    second,
+               const diff_sptr&                        underlying_type_diff,
+               const diff_context_sptr         ctxt = diff_context_sptr());
+
+public:
+  const array_type_def::subrange_sptr
+  first_subrange() const;
+
+  const array_type_def::subrange_sptr
+  second_subrange() const;
+
+  const diff_sptr
+  underlying_type_diff() const;
+
+  virtual const string&
+  get_pretty_representation() const;
+
+  virtual bool
+  has_changes() const;
+
+  virtual enum change_kind
+  has_local_changes() const;
+
+  virtual void
+  report(ostream&, const string& indent = "") const;
+
+  virtual void
+  chain_into_hierarchy();
+
+  friend subrange_diff_sptr
+  compute_diff(array_type_def::subrange_sptr first,
+              array_type_def::subrange_sptr second,
+              diff_context_sptr ctxt);
+}; // end subrange_diff
+
+subrange_diff_sptr
+compute_diff(array_type_def::subrange_sptr first,
+            array_type_def::subrange_sptr second,
+            diff_context_sptr ctxt);
+
+
 class array_diff;
 
 /// Convenience typedef for a shared pointer on a @ref
@@ -2855,6 +2916,9 @@ is_class_or_union_diff(const diff* d);
 const class_or_union_diff*
 is_anonymous_class_or_union_diff(const diff* d);
 
+const subrange_diff*
+is_subrange_diff(const diff* diff);
+
 const array_diff*
 is_array_diff(const diff* diff);
 
index 6d81097a93668cac25ff2a62d46c9f0fae1ffe29..d25e3a8c964566a724dfd8b4e6bb3911bc1a3f79 100644 (file)
@@ -2652,6 +2652,11 @@ is_subrange_type(const type_or_decl_base *type);
 array_type_def::subrange_sptr
 is_subrange_type(const type_or_decl_base_sptr &type);
 
+bool
+equals(const array_type_def::subrange_type&,
+       const array_type_def::subrange_type&,
+       change_kind*);
+
 bool
 equals(const enum_type_decl&, const enum_type_decl&, change_kind*);
 
index 6b16f13c0786309379e3e1dbebf4d1de372453cf..8104c6530228c9ae55dfdef1e6b5154789dd61d7 100644 (file)
@@ -32,6 +32,7 @@ class qualified_type_diff;
 class distinct_diff;
 class pointer_diff;
 class reference_diff;
+class subrange_diff;
 class array_diff;
 class base_diff;
 class class_or_union_diff;
@@ -92,6 +93,10 @@ public:
   report(const array_diff& d, std::ostream& out,
         const std::string& indent = "") const = 0;
 
+  virtual void
+  report(const subrange_diff& d, std::ostream& out,
+        const std::string& indent = "") const = 0;
+
   virtual void
   report(const base_diff& d, std::ostream& out,
         const std::string& indent = "") const = 0;
@@ -173,6 +178,11 @@ public:
                                      std::ostream& out,
                                      const std::string& indent) const;
 
+  void
+  report_underlying_changes_of_qualified_type (const qualified_type_diff& d,
+                                              ostream& out,
+                                              const string& indent) const;
+
   virtual void
   report(const qualified_type_diff& d, std::ostream& out,
         const std::string& indent = "") const;
@@ -203,6 +213,10 @@ public:
   report(const function_type_diff& d, std::ostream& out,
         const std::string& indent = "") const;
 
+  virtual void
+  report(const subrange_diff& d, std::ostream& out,
+        const std::string& indent = "") const;
+
   virtual void
   report(const array_diff& d, std::ostream& out,
         const std::string& indent = "") const;
@@ -285,6 +299,10 @@ public:
   report(const function_type_diff& d, std::ostream& out,
         const std::string& indent = "") const;
 
+  virtual void
+  report(const subrange_diff& d, std::ostream& out,
+        const std::string& indent = "") const;
+
   virtual void
   report(const array_diff& d, std::ostream& out,
         const std::string& indent = "") const;
index 43bf6a3e4c31e7931a3060f201faf497b1724c06..930557b58dfa8faca2c5f11059c4d4fa67520cfc 100644 (file)
@@ -34,6 +34,7 @@ const char* get_system_libdir();
 const char* get_anonymous_struct_internal_name_prefix();
 const char* get_anonymous_union_internal_name_prefix();
 const char* get_anonymous_enum_internal_name_prefix();
+const char* get_anonymous_subrange_internal_name_prefix();
 
 bool file_exists(const string&);
 bool is_regular_file(const string&);
index 29d2d2aca7a4587d20a8d59bb99364496976d799..481fc9c633df4d98c8eb454503502c05ae82e897 100644 (file)
@@ -414,6 +414,17 @@ struct pointer_diff::priv
   {}
 };//end struct pointer_diff::priv
 
+/// The internal type for the impl idiom implementation of @ref
+/// subrange_diff.
+struct subrange_diff::priv
+{
+  diff_sptr underlying_type_diff_;
+
+  priv(diff_sptr u)
+    : underlying_type_diff_(u)
+  {}
+}; // end struct subrange_diff::priv
+
 struct array_diff::priv
 {
   /// The diff between the two array element types.
index baae56a3aa499b61cc8bc2f7b36848a08b2eec11..c4596c8e7d4e4a763ba132bccab562958a7c65c8 100644 (file)
@@ -694,6 +694,16 @@ const typedef_diff*
 is_typedef_diff(const diff *diff)
 {return dynamic_cast<const typedef_diff*>(diff);}
 
+/// Test if a diff node is a @ref subrange_diff node.
+///
+/// @param diff the diff node to consider.
+///
+/// @return a non-nil pointer to a @ref subrange_diff iff @p diff is a
+/// @ref subrange_diff node.
+const subrange_diff*
+is_subrange_diff(const diff* diff)
+{return dynamic_cast<const subrange_diff*>(diff);}
+
 /// Test if a diff node is a @ref array_diff node.
 ///
 /// @param diff the diff node to consider.
@@ -3033,6 +3043,7 @@ compute_diff_for_types(const type_or_decl_base_sptr& first,
    ||(d = try_to_diff<class_decl>(f, s,ctxt))
    ||(d = try_to_diff<pointer_type_def>(f, s, ctxt))
    ||(d = try_to_diff<reference_type_def>(f, s, ctxt))
+   ||(d = try_to_diff<array_type_def::subrange_type>(f, s, ctxt))
    ||(d = try_to_diff<array_type_def>(f, s, ctxt))
    ||(d = try_to_diff<qualified_type_def>(f, s, ctxt))
    ||(d = try_to_diff<typedef_decl>(f, s, ctxt))
@@ -3714,6 +3725,143 @@ compute_diff(pointer_type_def_sptr      first,
 
 // </pointer_type_def>
 
+// <subrange_diff >
+
+/// Constructor of the @ref subrange_diff diff node type.
+///
+/// @param first the first subrange type to consider for the diff.
+///
+/// @param second the second subrange type to consider for the diff.
+///
+/// @param underlying_type_diff the underlying type diff between @p
+/// first and @p second.
+///
+/// @param ctxt the diff context to use.
+subrange_diff::subrange_diff
+(const array_type_def::subrange_sptr&  first,
+ const array_type_def::subrange_sptr&  second,
+ const diff_sptr&                      underlying_type_diff,
+ const diff_context_sptr               ctxt)
+  : type_diff_base(first, second, ctxt),
+    priv_(new priv(underlying_type_diff))
+{}
+
+
+/// Getter of the first subrange of the current instance @ref
+/// subrange_diff.
+///
+/// @return The first subrange of the current instance @ref subrange_diff.
+const array_type_def::subrange_sptr
+subrange_diff::first_subrange() const
+{return is_subrange_type(first_subject());}
+
+/// Getter of the second subrange of the current instance @ref
+/// subrange_diff.
+///
+/// @return The second subrange of the current instance @ref
+/// subrange_diff.
+const array_type_def::subrange_sptr
+subrange_diff::second_subrange() const
+{return is_subrange_type(second_subject());}
+
+/// Getter of the diff node of the underlying types of the current
+/// @ref subrange_diff diff node.
+///
+/// @return The diff node of the underlying types of the current @ref
+/// subrange_diff diff node.
+const diff_sptr
+subrange_diff::underlying_type_diff() const
+{return priv_->underlying_type_diff_;}
+
+/// Getter the pretty representation of the @ref subrange_diff diff
+/// node.
+///
+/// @return The pretty representation of the @ref subrange_diff diff node.
+const string&
+subrange_diff::get_pretty_representation() const
+{
+    if (diff::priv_->pretty_representation_.empty())
+    {
+      std::ostringstream o;
+      o << "subrange_diff["
+       << first_subject()->get_pretty_representation()
+       << ","
+       << second_subject()->get_pretty_representation()
+       << "]";
+      diff::priv_->pretty_representation_ = o.str();
+    }
+    return diff::priv_->pretty_representation_;
+}
+
+/// Test if the current @ref subrange_diff node carries any change.
+///
+/// @return true iff the current @ref subrange_diff node carries any
+/// change.
+bool
+subrange_diff::has_changes() const
+{return *first_subrange() != *second_subrange();}
+
+/// Test if the current @ref subrange_diff node carries any local
+/// change.
+///
+/// @return true iff the current @ref subrange_diff node carries any
+/// local change.
+enum change_kind
+subrange_diff::has_local_changes() const
+{
+  ir::change_kind k = ir::NO_CHANGE_KIND;
+  if (!equals(*first_subrange(), *second_subrange(), &k))
+    return k & ir::ALL_LOCAL_CHANGES_MASK;
+  return ir::NO_CHANGE_KIND;
+}
+
+/// Report about the changes carried by this node.
+///
+/// @param out the output stream to send the report to.
+///
+/// @param indent the indentation string to use.
+void
+subrange_diff::report(ostream& out, const string& indent) const
+{context()->get_reporter()->report(*this, out, indent);}
+
+/// Populate the vector of children node of the @ref diff base type
+/// sub-object of this instance of @ref subrange_diff.
+///
+/// The children node can then later be retrieved using
+/// diff::children_node().
+void
+subrange_diff::chain_into_hierarchy()
+{append_child_node(underlying_type_diff());}
+
+/// Compute the diff between two instances of @ref subrange_diff.
+///
+/// Note that the two decls must have been created in the same @ref
+/// environment, otherwise, this function aborts.
+///
+/// @param first the first @ref subrange_diff to consider for the diff.
+///
+/// @param second the second @ref subrange_diff to consider for the diff.
+///
+/// @param ctxt the diff context to use.
+///
+/// @return the resulting diff between the two @ref subrange_diff.
+subrange_diff_sptr
+compute_diff(array_type_def::subrange_sptr first,
+            array_type_def::subrange_sptr second,
+            diff_context_sptr ctxt)
+{
+  diff_sptr d = compute_diff_for_types(first->get_underlying_type(),
+                                      second->get_underlying_type(),
+                                      ctxt);
+
+  subrange_diff_sptr result(new subrange_diff(first, second, d, ctxt));
+  ctxt->initialize_canonical_diff(result);
+  return result;
+}
+
+//</subrange_diff >
+
+
 // <array_type_def>
 
 /// Populate the vector of children node of the @ref diff base type
@@ -7793,6 +7941,7 @@ struct diff_maps::priv
   string_diff_ptr_map class_diff_map_;
   string_diff_ptr_map union_diff_map_;
   string_diff_ptr_map typedef_diff_map_;
+  string_diff_ptr_map subrange_diff_map_;
   string_diff_ptr_map array_diff_map_;
   string_diff_ptr_map reference_diff_map_;
   string_diff_ptr_map function_type_diff_map_;
@@ -7880,6 +8029,20 @@ string_diff_ptr_map&
 diff_maps::get_typedef_diff_map()
 {return priv_->typedef_diff_map_;}
 
+/// Getter of the map that contains subrange type diffs.
+///
+/// @return the map that contains subrange type diffs.
+const string_diff_ptr_map&
+diff_maps::get_subrange_diff_map() const
+{return priv_->subrange_diff_map_;}
+
+/// Getter of the map that contains subrange type diffs.
+///
+/// @return the map that contains subrange type diffs.
+string_diff_ptr_map&
+diff_maps::get_subrange_diff_map()
+{return priv_->subrange_diff_map_;}
+
 /// Getter of the map that contains array type diffs.
 ///
 /// @return the map that contains array type diffs.
@@ -8007,6 +8170,8 @@ diff_maps::insert_diff_node(const diff *dif,
     get_union_diff_map()[n] = const_cast<union_diff*>(d);
   else if (const typedef_diff *d = is_typedef_diff(dif))
     get_typedef_diff_map()[n] = const_cast<typedef_diff*>(d);
+  else if (const subrange_diff *d = is_subrange_diff(dif))
+    get_subrange_diff_map()[n] = const_cast<subrange_diff*>(d);
   else if (const array_diff *d = is_array_diff(dif))
       get_array_diff_map()[n] = const_cast<array_diff*>(d);
   else if (const reference_diff *d = is_reference_diff(dif))
@@ -9899,6 +10064,8 @@ corpus_diff::priv::count_leaf_type_changes(size_t &num_changes,
     num_changes, num_filtered);
   do_count_diff_map_changes(leaf_diffs_.get_typedef_diff_map(),
     num_changes, num_filtered);
+  do_count_diff_map_changes(leaf_diffs_.get_subrange_diff_map(),
+                           num_changes, num_filtered);
   do_count_diff_map_changes(leaf_diffs_.get_array_diff_map(),
     num_changes, num_filtered);
   do_count_diff_map_changes(leaf_diffs_.get_distinct_diff_map(),
index 38b89e6229d0f90aa2e20400bfae59eb48424718..31832c3fec387d4b38406492b5e610b6d642bb12 100644 (file)
@@ -652,6 +652,28 @@ default_reporter::report(const function_type_diff& d, ostream& out,
     report_local_function_type_changes(d, out, indent);
 }
 
+/// Report about the change carried by a @ref subrange_diff diff node
+/// in a serialized form.
+///
+/// @param d the diff node to consider.
+///
+/// @param out the output stream to report to.
+///
+/// @param indent the indentation string to use in the report.
+void
+default_reporter::report(const subrange_diff& d, std::ostream& out,
+                        const std::string& indent) const
+{
+  if (!diff_to_be_reported(&d))
+    return;
+
+  RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER3(d.first_subrange(),
+                                                   d.second_subrange(),
+                                                   "range type");
+
+  represent(d, d.context(), out,indent, /*local_only=*/false);
+}
+
 /// Report a @ref array_diff in a serialized form.
 ///
 /// @param d the @ref array_diff to consider.
index a5b8e90a1a98f2c874e93107074b774291b18282..e0d4f327199d70215da62bf485de4fd95835445a 100644 (file)
@@ -8641,7 +8641,9 @@ get_type_name(const type_base_sptr& t, bool qualified, bool internal)
 static bool
 has_generic_anonymous_internal_type_name(const decl_base *d)
 {
-  return is_class_or_union_type(d) || is_enum_type(d);
+  return (is_class_or_union_type(d)
+         || is_enum_type(d)
+         || is_subrange_type(d));
 }
 
 /// Return the generic internal name of an anonymous type.
@@ -8671,6 +8673,9 @@ get_generic_anonymous_internal_type_name(const decl_base *d)
   else if (is_enum_type(d))
     result =
       env.intern(tools_utils::get_anonymous_enum_internal_name_prefix());
+  else if (is_subrange_type(d))
+    result =
+      env.intern(tools_utils::get_anonymous_subrange_internal_name_prefix());
   else
     ABG_ASSERT_NOT_REACHED;
 
index 7d363746a33ff022d949912c737f0f349f5cb407..2006d4ff4c42fa9fd9180aef0dbcb2972c6fd1a2 100644 (file)
@@ -140,6 +140,9 @@ report_type_changes_from_diff_maps(const leaf_reporter& reporter,
   // typedefs
   report_diffs(reporter, maps.get_typedef_diff_map(), out, indent);
 
+  // subranges
+  report_diffs(reporter, maps.get_subrange_diff_map(), out, indent);
+
   // arrays
   report_diffs(reporter, maps.get_array_diff_map(), out, indent);
 
@@ -430,6 +433,30 @@ leaf_reporter::report(const scope_diff& d,
     out << "\n";
 }
 
+/// Report about the change carried by a @ref subrange_diff diff node
+/// in a serialized form.
+///
+/// @param d the diff node to consider.
+///
+/// @param out the output stream to report to.
+///
+/// @param indent the indentation string to use in the report.
+void
+leaf_reporter::report(const subrange_diff& d, std::ostream& out,
+                     const std::string& indent) const
+{
+  if (!diff_to_be_reported(&d))
+    return;
+
+  RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER3(d.first_subrange(),
+                                                   d.second_subrange(),
+                                                   "range type");
+
+  represent(d, d.context(), out,indent, /*local_only=*/true);
+
+  maybe_report_interfaces_impacted_by_diff(&d, out, indent);
+}
+
 /// Report the changes carried by a @ref array_diff node.
 ///
 /// @param out the output stream to report to.
index b93cce3a1004f8e9a3ab0353c9fd79736de22435..4c2ff5296437a54d890333c5cd579d8d269a08c4 100644 (file)
@@ -1377,7 +1377,7 @@ static shared_ptr<function_type>
 build_function_type(reader&, const xmlNodePtr, bool);
 
 static array_type_def::subrange_sptr
-build_subrange_type(reader&, const xmlNodePtr);
+build_subrange_type(reader&, const xmlNodePtr, bool);
 
 static array_type_def_sptr
 build_array_type_def(reader&, const xmlNodePtr, bool);
@@ -4109,8 +4109,9 @@ build_function_type(reader&       rdr,
 /// @return a pointer to a newly built array_type_def::subrange_type
 /// upon successful completion, a null pointer otherwise.
 static array_type_def::subrange_sptr
-build_subrange_type(reader&    rdr,
-                   const xmlNodePtr    node)
+build_subrange_type(reader&            rdr,
+                   const xmlNodePtr    node,
+                   bool                add_to_current_scope)
 {
   array_type_def::subrange_sptr nil;
 
@@ -4209,6 +4210,9 @@ build_subrange_type(reader&       rdr,
   maybe_set_artificial_location(rdr, node, p);
   p->is_infinite(is_infinite);
 
+  if (rdr.push_and_key_type_decl(p, id, add_to_current_scope))
+    rdr.map_xml_node_to_decl(node, p);
+
   return p;
 }
 
@@ -4307,7 +4311,7 @@ build_array_type_def(reader&      rdr,
     if (xmlStrEqual(n->name, BAD_CAST("subrange")))
       {
        if (array_type_def::subrange_sptr s =
-           build_subrange_type(rdr, n))
+           build_subrange_type(rdr, n, /*add_to_current_scope=*/true))
          {
            MAYBE_MAP_TYPE_WITH_TYPE_ID(s, n);
            if (add_to_current_scope)
@@ -5818,6 +5822,7 @@ build_type(reader&        rdr,
    || (t = build_reference_type_def(rdr, node , add_to_current_scope))
    || (t = build_function_type(rdr, node, add_to_current_scope))
    || (t = build_array_type_def(rdr, node, add_to_current_scope))
+   || (t = build_subrange_type(rdr, node, add_to_current_scope))
    || (t = build_enum_type_decl_if_not_suppressed(rdr, node,
                                                  add_to_current_scope))
    || (t = build_typedef_decl(rdr, node, add_to_current_scope))
index a9fed5710a58596726c76c09e85e41b308e012d1..63a45b80f7467afbe27ddbc773f0d57253125e0e 100644 (file)
@@ -712,6 +712,77 @@ represent(const var_diff_sptr      &diff,
     out << "\n";
 }
 
+/// Represent the changes carried by an instance of @ref subrange_diff
+/// that represent a difference between two ranges.
+///
+/// @param diff diff the diff node to represent.
+///
+/// @param ctxt the diff context to use.
+///
+/// @param local_only if true, only display local changes.
+///
+/// @param out the output stream to send the representation to.
+///
+/// @param indent the indentation string to use for the change report.
+void
+represent(const subrange_diff&         d,
+         const diff_context_sptr       ctxt,
+         ostream&                      out,
+         const string&         indent,
+         bool                          local_only)
+{
+  array_type_def::subrange_sptr o = d.first_subrange();
+  array_type_def::subrange_sptr n = d.second_subrange();
+  string oor = o->get_pretty_representation();
+  string nr = n->get_pretty_representation();
+  string on = o->get_name();
+  string nn = n->get_name();
+  int64_t olb = o->get_lower_bound();
+  int64_t nlb = n->get_lower_bound();
+  int64_t oub = o->get_upper_bound();
+  int64_t nub = n->get_upper_bound();
+
+    if (on != nn)
+    {
+      out << indent << "name of range changed from '"
+         << on << "' to '" << nn << "'\n";
+    }
+
+  if (olb != nlb)
+    {
+      out << indent << "lower bound of range '"
+         << on
+         << "' change from '";
+      emit_num_value(olb, *ctxt, out);
+      out << "' to '";
+      emit_num_value(nlb, *ctxt, out);
+      out << "'\n";
+    }
+
+  if (oub != nub)
+    {
+      out << indent << "upper bound of range '"
+         << on
+         << "' change from '";
+      emit_num_value(oub, *ctxt, out);
+      out << "' to '";
+      emit_num_value(nub, *ctxt, out);
+      out << "'\n";
+    }
+
+  if (!local_only)
+    {
+      diff_sptr dif = d.underlying_type_diff();
+      if (dif && dif->to_be_reported())
+       {
+         // report range underlying type changes
+         out << indent << "underlying type of range '"
+             << oor << "' changed:\n";
+         dif->report(out, indent + "  ");
+       }
+    }
+}
+
 /// Report the size and alignment changes of a type.
 ///
 /// @param first the first type to consider.
index 884477d0c16bf8c28c9bdb368382533c8ebabbce..472d1fb9449bebe380da5fa92e5dcc269e84056f 100644 (file)
@@ -156,6 +156,13 @@ represent(const var_diff_sptr      &diff,
          const string& indent = "",
          bool                  local_only = false);
 
+void
+represent(const subrange_diff&         diff,
+         const diff_context_sptr       ctxt,
+         ostream&                      out,
+         const string&         indent = "",
+         bool                          local_only = false);
+
 void
 report_size_and_alignment_changes(type_or_decl_base_sptr       first,
                                  type_or_decl_base_sptr        second,
index 119e5f58839e801be8a63af630b50a52d876688e..03cb88f9937ecfdda185e1f7b6b5f315e633d776 100644 (file)
@@ -559,9 +559,10 @@ is_dir(const string& path)
   return false;
 }
 
-static const char* ANONYMOUS_STRUCT_INTERNAL_NAME = "__anonymous_struct__";
-static const char* ANONYMOUS_UNION_INTERNAL_NAME =  "__anonymous_union__";
-static const char* ANONYMOUS_ENUM_INTERNAL_NAME =   "__anonymous_enum__";
+static const char* ANONYMOUS_STRUCT_INTERNAL_NAME =   "__anonymous_struct__";
+static const char* ANONYMOUS_UNION_INTERNAL_NAME =    "__anonymous_union__";
+static const char* ANONYMOUS_ENUM_INTERNAL_NAME =     "__anonymous_enum__";
+static const char* ANONYMOUS_SUBRANGE_INTERNAL_NAME = "__anonymous_range__";
 
 static int ANONYMOUS_STRUCT_INTERNAL_NAME_LEN =
   strlen(ANONYMOUS_STRUCT_INTERNAL_NAME);
@@ -586,6 +587,9 @@ const char*
 get_anonymous_union_internal_name_prefix()
 {return ANONYMOUS_UNION_INTERNAL_NAME;}
 
+static int ANONYMOUS_SUBRANGE_INTERNAL_NAME_LEN =
+  strlen(ANONYMOUS_SUBRANGE_INTERNAL_NAME);
+
 /// Getter of the prefix for the name of anonymous enums.
 ///
 /// @reaturn the prefix for the name of anonymous enums.
@@ -593,6 +597,13 @@ const char*
 get_anonymous_enum_internal_name_prefix()
 {return ANONYMOUS_ENUM_INTERNAL_NAME;}
 
+/// Getter of the prefix for the name of anonymous range.
+///
+/// @reaturn the prefix for the name of anonymous range.
+const char*
+get_anonymous_subrange_internal_name_prefix()
+{return ANONYMOUS_SUBRANGE_INTERNAL_NAME;}
+
 /// Compare two fully qualified decl names by taking into account that
 /// they might have compontents that are anonymous types/namespace names.
 ///
index 9fe3dec70060ad9e3f9a1d53ec7fbdfa17768013..bd3f8db7dfcacc1f6b0d96a4d0eff2224915a4cd 100644 (file)
@@ -921,6 +921,9 @@ static bool write_reference_type_def(const reference_type_def_sptr&,
                                     write_context&, unsigned);
 static bool write_array_type_def(const array_type_def_sptr&,
                                 write_context&, unsigned);
+static bool write_array_subrange_type(const array_type_def::subrange_sptr&,
+                                     write_context&,
+                                     unsigned);
 static bool write_enum_type_decl(const enum_type_decl_sptr&,
                                 write_context&, unsigned);
 static bool write_typedef_decl(const typedef_decl_sptr&,
@@ -1969,6 +1972,9 @@ write_decl(const decl_base_sptr& decl, write_context& ctxt, unsigned indent)
                                  <reference_type_def>(decl), ctxt, indent)
       || write_array_type_def(dynamic_pointer_cast
                              <array_type_def>(decl), ctxt, indent)
+      || write_array_subrange_type(dynamic_pointer_cast
+                                  <array_type_def::subrange_type>(decl),
+                                  ctxt, indent)
       || write_enum_type_decl(dynamic_pointer_cast<enum_type_decl>(decl),
                              ctxt, indent)
       || write_typedef_decl(dynamic_pointer_cast<typedef_decl>(decl),
index f2d0c0ca81d80c55ae490e038ec83afc12a278ea..c91c24fb03c4d3d57f5ef503ba2da1c52b3aef71 100644 (file)
@@ -298,6 +298,14 @@ test-abidiff-exit/test-allow-type-region-v5.c \
 test-abidiff-exit/test-allow-type-region-v5.o \
 test-abidiff-exit/test-allow-type-suppr2.txt \
 test-abidiff-exit/test-allow-type-suppr1.txt \
+test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-1.txt \
+test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-2.txt \
+test-abidiff-exit/ada-subrange/test1-ada-subrange/v0/test1.adb \
+test-abidiff-exit/ada-subrange/test1-ada-subrange/v0/test1.ads \
+test-abidiff-exit/ada-subrange/test1-ada-subrange/v0/test1.o \
+test-abidiff-exit/ada-subrange/test1-ada-subrange/v1/test1.adb \
+test-abidiff-exit/ada-subrange/test1-ada-subrange/v1/test1.ads \
+test-abidiff-exit/ada-subrange/test1-ada-subrange/v1/test1.o \
 \
 test-diff-dwarf/test0-v0.cc            \
 test-diff-dwarf/test0-v0.o                     \
diff --git a/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-1.txt b/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-1.txt
new file mode 100644 (file)
index 0000000..1233215
--- /dev/null
@@ -0,0 +1,15 @@
+Functions changes summary: 0 Removed, 2 Changed, 0 Added functions
+Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
+
+2 functions with some indirect sub-type change:
+
+  [C] 'function test1__my_int[6] test1__first_function()' at test1.adb:6:1 has some indirect sub-type changes:
+    return type changed:
+      type name changed from 'test1__my_int[6]' to 'test1__my_int[7]'
+      array type size changed from 6000 to 7000
+      array type subrange 1 changed length from 6 to 7
+
+  [C] 'function test1__my_index test1__second_function()' at test1.adb:14:1 has some indirect sub-type changes:
+    return type changed:
+      upper bound of range 'test1__my_index' change from '5' to '6'
+
diff --git a/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-2.txt b/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-2.txt
new file mode 100644 (file)
index 0000000..30d7488
--- /dev/null
@@ -0,0 +1,19 @@
+Leaf changes summary: 3 artifacts changed
+Changed leaf types summary: 1 leaf type changed
+Removed/Changed/Added functions summary: 0 Removed, 2 Changed, 0 Added function
+Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
+
+2 functions with some sub-type change:
+
+  [C] 'function test1__my_int[6] test1__first_function()' at test1.adb:6:1 has some sub-type changes:
+    return type changed:
+      type name changed from 'test1__my_int[6]' to 'test1__my_int[7]'
+      array type size changed from 6000 to 7000
+      array type subrange 1 changed length from 6 to 7
+
+  [C] 'function test1__my_index test1__second_function()' at test1.adb:14:1 has some sub-type changes:
+    return type changed:
+      upper bound of range 'test1__my_index' change from '5' to '6'
+
+'<range test1__my_index>[6]' changed:
+  upper bound of range 'test1__my_index' change from '5' to '6'
diff --git a/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v0/test1.adb b/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v0/test1.adb
new file mode 100644 (file)
index 0000000..864ff96
--- /dev/null
@@ -0,0 +1,19 @@
+-- Compile this file with:
+--   gcc -g -c test1.adb
+
+package body Test1 is
+
+function First_Function return My_Int_Array is
+  A : My_Int_Array;
+begin
+  A := (1,2,3,4,5,6);
+  return A;
+end First_Function;
+
+
+function Second_Function return My_Index is
+begin
+  return My_Index'Last;
+end Second_Function;
+
+end Test1;
diff --git a/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v0/test1.ads b/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v0/test1.ads
new file mode 100644 (file)
index 0000000..bda041a
--- /dev/null
@@ -0,0 +1,11 @@
+package Test1 is
+
+type My_Int is range 0 .. 1000;
+type My_Index is range 0 .. 5;
+type My_Int_Array is array (My_Index) of My_Int;
+
+function First_Function return My_Int_Array;
+
+function Second_Function return My_Index;
+
+end Test1;
\ No newline at end of file
diff --git a/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v0/test1.o b/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v0/test1.o
new file mode 100644 (file)
index 0000000..28a539c
Binary files /dev/null and b/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v0/test1.o differ
diff --git a/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v1/test1.adb b/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v1/test1.adb
new file mode 100644 (file)
index 0000000..3872dac
--- /dev/null
@@ -0,0 +1,19 @@
+-- Compile this file with:
+--   gcc -g -c test1.adb
+
+package body Test1 is
+
+function First_Function return My_Int_Array is
+  A : My_Int_Array;
+begin
+  A := (1,2,3,4,5,6,7);
+  return A;
+end First_Function;
+
+
+function Second_Function return My_Index is
+begin
+  return My_Index'Last;
+end Second_Function;
+
+end Test1;
diff --git a/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v1/test1.ads b/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v1/test1.ads
new file mode 100644 (file)
index 0000000..2ec09b2
--- /dev/null
@@ -0,0 +1,11 @@
+package Test1 is
+
+type My_Int is range 0 .. 1000;
+type My_Index is range 0 .. 6;
+type My_Int_Array is array (My_Index) of My_Int;
+
+function First_Function return My_Int_Array;
+
+function Second_Function return My_Index;
+
+end Test1;
diff --git a/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v1/test1.o b/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v1/test1.o
new file mode 100644 (file)
index 0000000..fa2f2f5
Binary files /dev/null and b/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v1/test1.o differ
index 74d33acb1e228c720d454df8aa29af20e2144755..506ba75b9512750ffc15b7317642349eed10cc7d 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-variable-symbols>
     <!-- signed char -->
     <elf-symbol name='a' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
index ef998af90026c2ed33a6cdde0382716a97764e26..742bce37e6dd6ca3dfe72e288011cb7ae8c8c466 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libstdc++.so.6'/>
     <dependency name='libm.so.6'/>
index 919e06d315620506d38d97d4889a863be3194b7e..5cd5a8e6eabe49775ac68276ed432fbf0d5a81ff 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libgcc_s.so.1'/>
     <dependency name='libc.so.6'/>
index 919e06d315620506d38d97d4889a863be3194b7e..5cd5a8e6eabe49775ac68276ed432fbf0d5a81ff 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libgcc_s.so.1'/>
     <dependency name='libc.so.6'/>
index d0499f63339aed748eacd0fc75b40956d8c21968..89fb59569d1676e259284d91e8cc19dece77cfc1 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-function-symbols>
     <!-- foo(S&) -->
     <elf-symbol name='_Z3fooR1S' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
index 1e4c2415fa26abd221492f111db0a7d8c28d7d58..23e8098e525c52ae6499b54f2b871d19e108657c 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libstdc++.so.6'/>
     <dependency name='libm.so.6'/>
index d6740e939db29e73f232e2376283c62c0de689f3..311c6eb2b83e922e3b1d7fbe9a0be6ac7ed0f401 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libstdc++.so.6'/>
     <dependency name='libm.so.6'/>
index 23be514a8d04191db3195476d8413ff31549c412..2d8ae9651a134ef07c237c96e38bb648d3b22c4c 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='libdbus-1.so.3'>
+<abi-corpus version='2.2' soname='libdbus-1.so.3'>
   <elf-needed>
     <dependency name='librt.so.1'/>
     <dependency name='libpthread.so.0'/>
index 08f9024f3e890e5eed983560ac4efd51e7811c1f..10613f41b12e47b4091c6fdc8d2dd44b47810584 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='libGLU.so.1'>
+<abi-corpus version='2.2' soname='libGLU.so.1'>
   <elf-needed>
     <dependency name='libGL.so.1'/>
     <dependency name='libstdc++.so.6'/>
index 57e72a5ab3ef37e235d5b2f58a8042e857ccdb9d..f14d6c3d9993f27d4c04a2332daa7180cd8eba12 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='libtsan.so.0'>
+<abi-corpus version='2.2' soname='libtsan.so.0'>
   <elf-needed>
     <dependency name='librt.so.1'/>
     <dependency name='libpthread.so.0'/>
index a8f1a2ef61f28a5edafcfbecf8ac486434c75bc8..8a88ef0e1895d21e0bebe97a3d7be9fb958bb297 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='libharfbuzz.so.0'>
+<abi-corpus version='2.2' soname='libharfbuzz.so.0'>
   <elf-needed>
     <dependency name='libglib-2.0.so.0'/>
     <dependency name='libfreetype.so.6'/>
index 5ea48bd35a0e79ce0892dadc9b5a231bcff32180..d279ce6e502fc9b9a5494328cfee62746fdb5940 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='libvtkRenderingLIC-6.1.so.1'>
+<abi-corpus version='2.2' soname='libvtkRenderingLIC-6.1.so.1'>
   <elf-needed>
     <dependency name='libvtkIOLegacy-6.1.so.1'/>
     <dependency name='libvtkIOXML-6.1.so.1'/>
index 2b19b1dedd2af348c229df532160222b66f2c4e2..970bd6147c2890a282ba23cb141e4955e3d514b5 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='libtcmalloc_and_profiler.so.4'>
+<abi-corpus version='2.2' soname='libtcmalloc_and_profiler.so.4'>
   <elf-needed>
     <dependency name='libunwind.so.8'/>
     <dependency name='libpthread.so.0'/>
index 039f67b1635c6eae99da2bf4e7412725b23f8d64..40cba346f3d77b2d12e35f486b852e40d83435d1 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libstdc++.so.6'/>
     <dependency name='libm.so.6'/>
index 670588667efea2547e252d50213047d1068b14db..13a511f12b8b57089259668551ec69b1ebf9c7c4 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='libvtkParallelCore-6.1.so.1'>
+<abi-corpus version='2.2' soname='libvtkParallelCore-6.1.so.1'>
   <elf-needed>
     <dependency name='libvtkIOLegacy-6.1.so.1'/>
     <dependency name='libvtkIOCore-6.1.so.1'/>
index 4868ed779d5253c933c2cb4249a3ffdb1322e1b8..ddf2d32f704fa8aa34423b07075f6f0d3bb519c2 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libstdc++.so.6'/>
     <dependency name='libm.so.6'/>
index 3da437913cb3d1894f098d3ea7218e090deb1748..3153db54f3ce60c6062f5db0041fb1509d4d35d4 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='test3.so.1'>
+<abi-corpus version='2.2' soname='test3.so.1'>
   <elf-needed>
     <dependency name='libc.so.6'/>
   </elf-needed>
index 2e7a47f4d321ee4961b9ecd1155ddc1036859d1e..b478fe5c58cd72cd18aca3a89b13b90c5d639054 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libc.so.6'/>
   </elf-needed>
index 38655f74b6b2d798ce4231842c1110ff274b99ff..4674be7c9c140f8482b5023a9da9b1a81e221b7e 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-function-symbols>
     <!-- bar(void*) -->
     <elf-symbol name='_Z3barPv' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
index aa22f8410803300da03e1d7c77e07f07a4e1c080..a313c7694190ff8ba7baec1e47948b276bf5771d 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libstdc++.so.6'/>
     <dependency name='libm.so.6'/>
index f85708ae9e0e1d115c8fff7843deb45316e891fc..85062a829b83d93a09ead6ba0aa75940196e9f15 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-function-symbols>
     <!-- foo(S&) -->
     <elf-symbol name='_Z3fooR1S' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
index 117451c416723851620a53b63462113572d923e4..b17505f88586d06dd0fe62997f8ddfa4002edb61 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libstdc++.so.6'/>
     <dependency name='libm.so.6'/>
index 165beaee232c57634fe9d08f661a3f8d356d6781..3323f0534f2e7eba8faa62225cc9cf768fc7e260 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-btf/test0.o'>
+<abi-corpus version='2.2' path='data/test-read-btf/test0.o'>
   <elf-function-symbols>
     <elf-symbol name='fn0' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-function-symbols>
index 273039bace9762cb7b947eebac2f6dd12567e136..200388e773bf6f047ed38baf71f3439a0e29e8b5 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-btf/test1.o'>
+<abi-corpus version='2.2' path='data/test-read-btf/test1.o'>
   <elf-function-symbols>
     <elf-symbol name='fn0' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-function-symbols>
index 1a7c229e245a2d8a6da83a91a95bf18c608303dc..7ce820972fcb7e8686d6615212ddfe960ce305f5 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-common/PR27700/test-PR27700.o'>
+<abi-corpus version='2.2' path='data/test-read-common/PR27700/test-PR27700.o'>
   <elf-function-symbols>
     <elf-symbol name='foo' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-function-symbols>
index 600174571fa12eb248f8d22da8219dfc6005f91c..378ef14ad3afadd20ac6c402de3d030daec601ac 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-common/test-PR26568-1.o'>
+<abi-corpus version='2.2' path='data/test-read-common/test-PR26568-1.o'>
   <elf-function-symbols>
     <elf-symbol name='fun' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-function-symbols>
index d038316a17518cf76764eff6d9266d0cfd7f307d..5163c2ee44b8344c7e16dac5d4442c1c5518d5fe 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-common/test-PR26568-2.o'>
+<abi-corpus version='2.2' path='data/test-read-common/test-PR26568-2.o'>
   <elf-function-symbols>
     <elf-symbol name='fun' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-function-symbols>
index 0122abc6650b3e58fa21f126c6b7889df5f828e4..cec8a2c62d848a5ff792e13e5282857872e70b64 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test-alias.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test-alias.o'>
   <elf-function-symbols>
     <elf-symbol name='alias_func' type='func-type' binding='weak-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='main_func' type='func-type' binding='global-binding' visibility='default-visibility' alias='alias_func' is-defined='yes'/>
index 42ce36dee979d75030a88b32a0e3021321986186..3d6a779e5c610b1dbd3798eb159de7f463a284b1 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test-ambiguous-struct-A.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test-ambiguous-struct-A.o'>
   <elf-variable-symbols>
     <elf-symbol name='foo' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-variable-symbols>
index 351483def43951e3d5681502ce8236f7fc2a76b9..ba34d7a3b8507ab459fda24a4f21cd3cac9f1a04 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test-ambiguous-struct-B.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test-ambiguous-struct-B.o'>
   <elf-variable-symbols>
     <elf-symbol name='a' size='24' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-variable-symbols>
index 987daa573a969d987443d85e4ae3b3e116c47ea6..34234d1f34794822a568d507ff52a60cf769f197 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test-anonymous-fields.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test-anonymous-fields.o'>
   <elf-variable-symbols>
     <elf-symbol name='t' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-variable-symbols>
index 177284d283161f0c7ae79886043ca0eaff1c32d2..b8aad7d56c7a1c243b100e612907458af16b5e71 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test-array-mdimension.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test-array-mdimension.o'>
   <elf-variable-symbols>
     <elf-symbol name='a' size='120' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-variable-symbols>
index c521bbec8faeadd47083205a4d26c9bf27b6d417..38f65f1f4c945f1fce91f431f7ffe4b4d01bf2a5 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test-array-of-pointers.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test-array-of-pointers.o'>
   <elf-variable-symbols>
     <elf-symbol name='t' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-variable-symbols>
index cd1bafe69ca6c3944a1eb983fbbf7d4a1006c738..d0a654a992c2df0445ce805b6790800e0c0dc4eb 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test-array-size.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test-array-size.o'>
   <elf-variable-symbols>
     <elf-symbol name='bar' size='1' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='baz' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
index b95f1781d80a9c06e48f075e42a8236d6020550b..d1505469b8d1b859713ac53931c277026650b0ab 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test-bitfield-enum.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test-bitfield-enum.o'>
   <elf-variable-symbols>
     <elf-symbol name='e' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-variable-symbols>
index 4231ba3e13e9d0ef972246710153bdc892161b34..7a28278e6de96348519d36f7f62839d7b5a35134 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test-bitfield.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test-bitfield.o'>
   <elf-variable-symbols>
     <elf-symbol name='f' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='fb' size='1' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
index 3c90e73785d1cc7dfdf87f47cba7c43f9722a013..96ea10f0770559faceb2d6ddc0917fbc67fac7ea 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test-callback.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test-callback.o'>
   <elf-function-symbols>
     <elf-symbol name='assign' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='f2' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
index 87b43d0604454ff8066885e24f2642ddc65dc4c7..8f140e85564b1ac9f02507c2bd9f73783066ac75 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test-callback2.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test-callback2.o'>
   <elf-variable-symbols>
     <elf-symbol name='s0' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-variable-symbols>
index 79079b046678aeae826121c82b5cd4866cb0e2ab..0e9e5741309278fe99ba8fad804303dbcb694c37 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test-conflicting-type-syms-a.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test-conflicting-type-syms-a.o'>
   <elf-variable-symbols>
     <elf-symbol name='a' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='ignore2' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
index 74b25d366ebd8e8d48c8422d8b8527221d764283..1722e93a19d7ef22e395f0e24dbb3242e71f3ff7 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test-conflicting-type-syms-b.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test-conflicting-type-syms-b.o'>
   <elf-variable-symbols>
     <elf-symbol name='b' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='ignore1' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
index bd60b0983837fbe77560d0c8ac2e451a9a6d629b..36fbeccc741950e13cb6446b9484a66db843199b 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test-const-array.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test-const-array.o'>
   <elf-variable-symbols>
     <elf-symbol name='a' size='32' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-variable-symbols>
index 4a919cae8b6a7d5f2c25b9bfc3ff766d7cb5c623..52f601ea829c5639361ea056cc640bb24b596bd0 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test-dynamic-array.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test-dynamic-array.o'>
   <elf-function-symbols>
     <elf-symbol name='use_struct_s' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-function-symbols>
index 9119525bc490702d757f80ca3e36b351c06f148b..761d34698babdfa13e9d5a71079e8f7b7786e780 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test-enum-many.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test-enum-many.o'>
   <elf-variable-symbols>
     <elf-symbol name='bar' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='foo' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
index da68828c1cbd1f494da79553f68a3d1dd5c663dd..236f2399339a26ea5ad24b54dc46c428cb9f6a0a 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test-enum-symbol.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test-enum-symbol.o'>
   <elf-variable-symbols>
     <elf-symbol name='primary1' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-variable-symbols>
index e13ebdd0624ac8894eec166b9f6ed41e0f53c401..ca02fdf4381c7b220c891239b7e43b1aa80edbd3 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test-enum.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test-enum.o'>
   <elf-variable-symbols>
     <elf-symbol name='bar' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='foo' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
index 9f09cd567fdd2011a374008f1d56743f3af164e0..1ed9508c70d412f649dc33583b7b2aa56acee890 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test-fallback.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test-fallback.o'>
   <elf-variable-symbols>
     <elf-symbol name='a' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-variable-symbols>
index c239187ba33cd8f2f6eef360c6788b73999fa850..46caf6a0d71f2a27c823754799143d8c8175620e 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test-forward-type-decl.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test-forward-type-decl.o'>
   <elf-variable-symbols>
     <elf-symbol name='addr' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-variable-symbols>
index 193221e405318dc77cfa99adbc75c1366cd56c06..84f50c39de9878b8486bfc9ffb487d0de779f8ab 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test-functions-declaration.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test-functions-declaration.o'>
   <elf-function-symbols>
     <elf-symbol name='attribute_container_add_device' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='attribute_container_device_trigger' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
index 933b9f82b9a236471e7f8d6ddba3471b145c42fb..7f4806cc361376ce3606d27d5d9cb495bba153a2 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test-linux-module.ko'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test-linux-module.ko'>
   <elf-function-symbols>
     <elf-symbol name='testexport' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x533ba8e8'/>
     <elf-symbol name='testexport2' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x65900b2f'/>
index 3fdc6aecdd7905b05a7b03bb257b0a89eeacb432..bcbbfc8138a20c07590c2aac7c32ea37d892779f 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test-list-struct.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test-list-struct.o'>
   <elf-variable-symbols>
     <elf-symbol name='n1' size='16' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='n2' size='16' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
index 60d3cf1e9878ce629f2a8df0e2dec308453cf76f..7903841cc514856f86416392baa26392ff81df8a 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test0'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test0'>
   <elf-needed>
     <dependency name='libc.so.6'/>
   </elf-needed>
index 76dd581e67ec2d24cf24f90a16577aec3e94bb20..36faacf2803675d871b78ebecf264b027817f3c0 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test0'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test0'>
   <elf-needed>
     <dependency name='libc.so.6'/>
   </elf-needed>
index 2ecd582683062f21d062d9a3a34b372f80082d61..945307539cd00674e9c87fd30a6bc8a309942700 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test1.so'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test1.so'>
   <elf-needed>
     <dependency name='libc.so.6'/>
   </elf-needed>
index 4f8633dd254231dbc1e9d87eae38a54e9c3ef947..f70ed68333663f61fef92b026eae515259b2f4c6 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test1.so'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test1.so'>
   <elf-needed>
     <dependency name='libc.so.6'/>
   </elf-needed>
index f2fb069d6ccd9cfb4f213c498e7db12217de3aca..5731f73dd2363fb60cb2592b5f4f70688205d5fc 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test2.so'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test2.so'>
   <elf-needed>
     <dependency name='libc.so.6'/>
   </elf-needed>
index 1efd533af2e5bef7f423615f679963efff8d9ff2..7de2522839f775e00307d877d8d995ee9cd7f2a5 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test2.so'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test2.so'>
   <elf-needed>
     <dependency name='libc.so.6'/>
   </elf-needed>
index 8e2492f34341cb6f43c8c2a5cf2d0a87a9be03ce..253f9c08c9d21d9075ecd643e5625dd0806df652 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-common/test3.so' soname='test3.so.1'>
+<abi-corpus version='2.2' path='data/test-read-common/test3.so' soname='test3.so.1'>
   <elf-needed>
     <dependency name='libc.so.6'/>
   </elf-needed>
index f991d33ae2348cd916506c603174cac8a829d0f5..dff5fdc826cb1890202537af34cae5541f4a6acf 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-common/test3.so' soname='test3.so.1'>
+<abi-corpus version='2.2' path='data/test-read-common/test3.so' soname='test3.so.1'>
   <elf-needed>
     <dependency name='libc.so.6'/>
   </elf-needed>
index 9f4e925512d84e5aa41f765142ed6151bc785eba..90549d45d45d6482cb8c8992c23037b944bcb0a2 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-common/test4.so'>
+<abi-corpus version='2.2' path='data/test-read-common/test4.so'>
   <elf-needed>
     <dependency name='libc.so.6'/>
   </elf-needed>
index 1e952c7518e65e09dbd131cd68088dd902579e9e..13712aa20f5136a76bd5b92f0c2559f6466ba5ad 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-common/test4.so'>
+<abi-corpus version='2.2' path='data/test-read-common/test4.so'>
   <elf-needed>
     <dependency name='libc.so.6'/>
   </elf-needed>
index 814aff7fd3b4879f4ef0ddde3ed443ad73cce5db..be354278e71812abd7e4c60fb91be5cd69686039 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test5.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test5.o'>
   <elf-function-symbols>
     <elf-symbol name='bar' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='bar2' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
index 65371cf54c2a9290727d95c7446fd465cade141b..16c44565b8ba4e512913a8f6420b4c119c4cfbf6 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test7.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test7.o'>
   <elf-function-symbols>
     <elf-symbol name='first_type_constructor' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-function-symbols>
index 430bc128179774cd9ef6e203434d0e61f65e2e67..cee2b634fa6bed8f53964afb5b423fdcae27cce1 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test8.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test8.o'>
   <elf-function-symbols>
     <elf-symbol name='bar' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-function-symbols>
index 5c89f82148360c452d94aec95c41c743665d001e..ba1758663ee5cc8099dff921ec3d6452377a8fc8 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='data/test-read-ctf/test9.o'>
+<abi-corpus version='2.2' path='data/test-read-ctf/test9.o'>
   <elf-function-symbols>
     <elf-symbol name='foo' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-function-symbols>
index 694775886b06b236e2a728d7a99beb190a4fa9e3..1d0664a1f25f1c18071a365f7e0c33f4a49ac933 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='build/cached/third_party/boost-1.60.0/libboost_system.so'/>
     <dependency name='libm.so.6'/>
index 30cd0f99f89124bbe7025ed104eb200080f7f695..5d1ea873650a5b7b6c6a5780d34e3987d4518d6f 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='build/cached/third_party/s2/libs2.so'/>
     <dependency name='build/cached/third_party/s2/util/math/libmath.so'/>
index a2448392e52f80d24c8fdcc96e12122d03fef988..6740a3f2c0b4b96b33e1b066bb120ce772283510 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-function-symbols>
     <elf-symbol name='_ZN4stac14buggy_functionEPFvPFfiiEE' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-function-symbols>
index 4e4d96f64a6df4a6293f8634d65d6924f957e395..e242bc94c81b91127b3b1846a9c27fc74720fba0 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-function-symbols>
     <elf-symbol name='__sdhci_add_host' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x74ae518'/>
     <elf-symbol name='__sdhci_read_caps' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x711f65c'/>
index 7785efb16b892329ecdcac0841f6fbd54e1d83b0..df97dc1d1629627a085165c4e9a853ab2fabf624 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='libgdbm.so.6'>
+<abi-corpus version='2.2' soname='libgdbm.so.6'>
   <elf-needed>
     <dependency name='libc.so.6'/>
     <dependency name='ld-linux-x86-64.so.2'/>
index 9ae5cd7d091c3e54613b8291475663ff9b53b073..8460c0ce0db04296c644bc81a944ccb87221c305 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libc.so.6'/>
   </elf-needed>
index 092ce75e96e750e44fd9f8a38fdd5be5a4f3cb22..4a5d1ad2c415e2507d70e2151ea1120ac8c5b411 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-function-symbols>
     <elf-symbol name='foo' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-function-symbols>
index 467bdd10f91cfd670ce612eac21bba4335b67cf1..4d10a3efb0c4b17c0636222374b4c71a300c34ec 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-variable-symbols>
     <elf-symbol name='_ZN1N1S1DE' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-variable-symbols>
index 5c5e4f96492b79182d93b26d343bdf9292c077cc..963c21e67ea1cf7850341537d4a3c709d900e733 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-variable-symbols>
     <elf-symbol name='a' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='xx' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
index e2b3e1454877561a77145c6e810bc3b5799104d0..122a075a33da6f22d6f08719d6ddcfced37da6bb 100644 (file)
@@ -1,2 +1,2 @@
-<abi-corpus version='2.1' soname='libkjava.so.1'>
+<abi-corpus version='2.2' soname='libkjava.so.1'>
 </abi-corpus>
index fd5f68b33b005f4424c9a1c22c74dd126bb5c5cc..ba1cf14c9ca08aa28c827c0f1468e0f6d4aa7ae0 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libstdc++.so.6'/>
     <dependency name='libm.so.6'/>
index 01bb1a4c4612164d8647eed000fdaa5f6e385bfd..cf5a2258ac365d32ed32f93c5c33ec832ae46b5c 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libgcc_s.so.1'/>
     <dependency name='libc.so.6'/>
index 01bb1a4c4612164d8647eed000fdaa5f6e385bfd..cf5a2258ac365d32ed32f93c5c33ec832ae46b5c 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libgcc_s.so.1'/>
     <dependency name='libc.so.6'/>
index e5d3d1f53bc4f80258bb9132c0d2ad1a74cca09b..aad777b82b7350d1b86f4164cbbae65cf10bb6fc 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-function-symbols>
     <elf-symbol name='fun' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-function-symbols>
index 4502524a1239b5f8b99581fe04511c62f4560425..9c8fdd9c331498ef873fbf291497c163015f3fea 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-function-symbols>
     <elf-symbol name='fun' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-function-symbols>
index ebbae7ef6f723221f875edf563a4f6c34e5554a0..14879beebb436f4d109751ebdbc769b7a983ebf9 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-variable-symbols>
     <elf-symbol name='a' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-variable-symbols>
index 98ddd260b8f0e39ac01ddcc9989750239d4aa256..beb0034898298db628900677e2edaf5a513f54a4 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='libaaudio.so'>
+<abi-corpus version='2.2' soname='libaaudio.so'>
   <elf-needed>
     <dependency name='libaaudio_internal.so'/>
     <dependency name='libaudioclient.so'/>
index 4ef47d7ad29445def15f0d034e8a2a5cb6cf179e..cb32d1fd2942b99d5deed3181cb287757dd9ee13 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='libandroid.so'>
+<abi-corpus version='2.2' soname='libandroid.so'>
   <elf-needed>
     <dependency name='liblog.so'/>
     <dependency name='libhidlbase.so'/>
index a22ee7d390ce0c7bd6671c8c57b80c89c03edc01..2198daf1857f4085e8f2855965e0ae3cf8d4a044 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-function-symbols>
     <elf-symbol name='alias_func' type='func-type' binding='weak-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='main_func' type='func-type' binding='global-binding' visibility='default-visibility' alias='alias_func' is-defined='yes'/>
index 6b13550c5ad73c15655766a61b175a08524f646b..6c23a4d2a88f54d59b968b1b13a71dce6ff62f4d 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libstdc++.so.6'/>
     <dependency name='libm.so.6'/>
index 4c2ae738d278dd929a1f10d6513597f5d2f4e04b..14f7cd5d767e30e2b13625e02b0a6434acdf3cd3 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libstdc++.so.6'/>
     <dependency name='libm.so.6'/>
index 2d08d2a000562dbbc9fbc56ad636e28b9ab55a33..292e690d649a302b173c91330db3d8cdc8c7868d 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libstdc++.so.6'/>
     <dependency name='libm.so.6'/>
index 998c8c102da1f47023ebbe0e40302cc61c704f97..a0b33462a6547a14380f5f91d9c37d4e882adc56 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libstdc++.so.6'/>
     <dependency name='libm.so.6'/>
index 3cbf69c5d54c316711bc8b24001e3250526f59a3..ca521c2a31c7f87e231398b6d2aa7ae06f2aa11b 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='build/debug/third_party/boost-1.56.0/libboost_system.so'/>
     <dependency name='librt.so.1'/>
index 925643af60a8489a8dbc3690596ee3dbf431b928..7ca1b34560bbc81fc33a6b9aaeb36c85c58c4b9a 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='build/debug/mongo/db/libserver_parameters.so'/>
     <dependency name='build/debug/mongo/libbase.so'/>
index e7ad31c4881758b22db167886c455836f24beaf8..fc63f084603f917746fa828a583c6f74fde41981 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='build/debug/mongo/bson/mutable/libmutable_bson.so'/>
     <dependency name='build/debug/mongo/bson/util/libbson_extract.so'/>
index a8e836b15c6219053521c63ef2d9df23167fffbf..0f1f10d162400f3d3cf9428f99a843eb750b1755 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='libdbus-1.so.3'>
+<abi-corpus version='2.2' soname='libdbus-1.so.3'>
   <elf-needed>
     <dependency name='librt.so.1'/>
     <dependency name='libpthread.so.0'/>
index 5ef20ee99a95173c5ff3f3191df27b049abd0229..7a997b4bea6f32c4ae9bdcfba825233fedae5eb4 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='libGLU.so.1'>
+<abi-corpus version='2.2' soname='libGLU.so.1'>
   <elf-needed>
     <dependency name='libGL.so.1'/>
     <dependency name='libstdc++.so.6'/>
index 0b2f8fa2866a4f3f30101e75ba95f6ed227d79b9..353b394d3e9b26e066c8ada815e265f3a3e6de67 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='libtsan.so.0'>
+<abi-corpus version='2.2' soname='libtsan.so.0'>
   <elf-needed>
     <dependency name='librt.so.1'/>
     <dependency name='libpthread.so.0'/>
index f98bbdc53717322ff0e73e0edc492f9af904bcc7..8965b90adf7fee59df3900aa31765cc19fcca69e 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='liboffloadmic_host.so.5'>
+<abi-corpus version='2.2' soname='liboffloadmic_host.so.5'>
   <elf-needed>
     <dependency name='libdl.so.2'/>
     <dependency name='libstdc++.so.6'/>
index 859dd13c0b7c7adf38ec4a91f8fb628abfb63ba3..cdf0f75c8ba0b0f78341685be920462f91b9c019 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='libharfbuzz.so.0'>
+<abi-corpus version='2.2' soname='libharfbuzz.so.0'>
   <elf-needed>
     <dependency name='libglib-2.0.so.0'/>
     <dependency name='libfreetype.so.6'/>
index b6d567d3da28e572eab71153cd32d01560871ab1..77dd702311b6535cec0f70493577cde2d555f74b 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='libvtkRenderingLIC-6.1.so.1'>
+<abi-corpus version='2.2' soname='libvtkRenderingLIC-6.1.so.1'>
   <elf-needed>
     <dependency name='libvtkIOLegacy-6.1.so.1'/>
     <dependency name='libvtkIOXML-6.1.so.1'/>
index 8b468a5b11ae4868401f9f39aa1d8d873869995a..d6284965f110f751f47004cf46f02992bf9198dd 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='libtcmalloc_and_profiler.so.4'>
+<abi-corpus version='2.2' soname='libtcmalloc_and_profiler.so.4'>
   <elf-needed>
     <dependency name='libunwind.so.8'/>
     <dependency name='libpthread.so.0'/>
index 0dfa8f90b7fa5cc85aaf949d70e55db2a74247d8..e79c1c3b444ffb917157f9849f3e9286a3f56b82 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libstdc++.so.6'/>
     <dependency name='libm.so.6'/>
index 4be854a06c3246fecfb3a2e34380d101fb67e375..de63fc638a3d097839bd430c76be9cdf6e0b1733 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libstdc++.so.6'/>
     <dependency name='libm.so.6'/>
index 568fb4bdc9e843e529a72069030bf9a778ee3a35..4a8529437d1d20dfe08d8732ba65f561f5ea0c6d 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='libvtkParallelCore-6.1.so.1'>
+<abi-corpus version='2.2' soname='libvtkParallelCore-6.1.so.1'>
   <elf-needed>
     <dependency name='libvtkIOLegacy-6.1.so.1'/>
     <dependency name='libvtkIOCore-6.1.so.1'/>
index 760ef9222aac42a60108f377283294f241f5140d..98745b4f50483aa8502eec063146b039eb3e1712 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libstdc++.so.6'/>
     <dependency name='libm.so.6'/>
index e62b5985da29c5db438992034524f7bb37b7f32e..38e9e997ac1958a3481d106833ff86b2df625810 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='libstdc++.so.6'>
+<abi-corpus version='2.2' soname='libstdc++.so.6'>
   <elf-needed>
     <dependency name='libm.so.6'/>
     <dependency name='libc.so.6'/>
index acf0a72364b6c9661b751bbe15b5b45e22820ef7..c5c86da2dd9513b7c9da578f1e1f73d69a5cfe9a 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='test3.so.1'>
+<abi-corpus version='2.2' soname='test3.so.1'>
   <elf-needed>
     <dependency name='libc.so.6'/>
   </elf-needed>
index acf0a72364b6c9661b751bbe15b5b45e22820ef7..c5c86da2dd9513b7c9da578f1e1f73d69a5cfe9a 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='test3.so.1'>
+<abi-corpus version='2.2' soname='test3.so.1'>
   <elf-needed>
     <dependency name='libc.so.6'/>
   </elf-needed>
index acf0a72364b6c9661b751bbe15b5b45e22820ef7..c5c86da2dd9513b7c9da578f1e1f73d69a5cfe9a 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='test3.so.1'>
+<abi-corpus version='2.2' soname='test3.so.1'>
   <elf-needed>
     <dependency name='libc.so.6'/>
   </elf-needed>
index acf0a72364b6c9661b751bbe15b5b45e22820ef7..c5c86da2dd9513b7c9da578f1e1f73d69a5cfe9a 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='test3.so.1'>
+<abi-corpus version='2.2' soname='test3.so.1'>
   <elf-needed>
     <dependency name='libc.so.6'/>
   </elf-needed>
index 9b7b7a349c4e65f0a52219a4a44542a9d7705aa5..c892e95087a2b6df4f0e06fe3f782142644f88d1 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='test3.so.1'>
+<abi-corpus version='2.2' soname='test3.so.1'>
   <elf-needed>
     <dependency name='libc.so.6'/>
   </elf-needed>
index acf0a72364b6c9661b751bbe15b5b45e22820ef7..c5c86da2dd9513b7c9da578f1e1f73d69a5cfe9a 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' soname='test3.so.1'>
+<abi-corpus version='2.2' soname='test3.so.1'>
   <elf-needed>
     <dependency name='libc.so.6'/>
   </elf-needed>
index 34c8b1acfa159004d6de7c4ef1df28ccf2b9de7c..94f62310226f8a86b158e9c001ce06e3a3f2816d 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libc.so.6'/>
   </elf-needed>
index f74aebafa76efde541d15250a380a7752f148c19..d6328c8ccf11661548741023a7df44f749b6913f 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libc.so.6'/>
   </elf-needed>
index e8229b2062f5e4b56f65279d4f3302bf1b52559e..9fa8b02302c6760601d9f72c428d5fd605609707 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-function-symbols>
     <elf-symbol name='_Z3barPv' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-function-symbols>
index 174d56b1aab1b14d05746fd1efd8da697d90c521..00a57983b79e2da128102bfd5a7fd8f60bfa7e9c 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-function-symbols>
     <elf-symbol name='_Z3barPv' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-function-symbols>
index 17fcdecd3f93ff9dee905d689bd5f319ee207d22..9007c596c9f8dbc8b161de25d90be2cf6a31b03e 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libstdc++.so.6'/>
     <dependency name='libm.so.6'/>
index 5495813c6a52a2180b13cc7e50ebbc460d957d70..67688333816413233ddb159a29bc95f2c68a8438 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libstdc++.so.6'/>
     <dependency name='libm.so.6'/>
index 7068711ac346c0b3fe05139d5826dfd20fee4148..a9657f9ab571ca63a901adb96fb665e8b941a249 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-function-symbols>
     <elf-symbol name='_Z3fooR1S' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-function-symbols>
index 0a53f0dc7cabc5d1b0582b0f5cbd9a37523e1b09..dda3d9ae4740802c0f6606d4507c0ed6fde53fee 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-function-symbols>
     <elf-symbol name='_Z3fooR1S' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-function-symbols>
index c02b72306a3dddb9d2ab71f2904e46c1babbd1a7..2d1a64178ecdb8f785ad23c38badfb4aa418fee4 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libstdc++.so.6'/>
     <dependency name='libm.so.6'/>
index 064e93f60545d4c826f39985c2a524a23201041c..a6e3f429e2c5ec77590253eedfa9d889e8fa8214 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='libstdc++.so.6'/>
     <dependency name='libm.so.6'/>
index 3557763c4e61c26d93995861193f618f834760c5..05129ee21491999826768e53179b83c17e62b12e 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1'>
+<abi-corpus version='2.2'>
   <elf-needed>
     <dependency name='build/debug/third_party/boost-1.56.0/libboost_system.so'/>
     <dependency name='libm.so.6'/>
index 2db32b7cb96ac2f7f3f4190e7bf594fbb8798919..5b3ac93e31e789cefaf6b06ca533af2c10c8751b 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='tests/data/test-symtab/kernel-modversions/one_of_each.ko' architecture='elf-amd-x86_64'>
+<abi-corpus version='2.2' path='tests/data/test-symtab/kernel-modversions/one_of_each.ko' architecture='elf-amd-x86_64'>
   <elf-function-symbols>
     <elf-symbol name='exported_function' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xe52d5bcf'/>
     <elf-symbol name='exported_function_gpl' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xfda43846'/>
index 178ab8191883802324c4647c6aa3b8eb15b44723..2b1fc5f71b3f28d271dfeb532cd55dd7950fcb70 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='libtest-v0.so'>
+<abi-corpus version='2.2' path='libtest-v0.so'>
   <elf-function-symbols>
     <elf-symbol name='_fini' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='_init' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
index 8b53f905eda15f92804e339428f2723f95ea7b92..4afc49b7b439631e4c8c1a8bce43fde2065dd8f8 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='repr7' architecture='elf-amd-x86_64'>
+<abi-corpus version='2.2' path='repr7' architecture='elf-amd-x86_64'>
   <elf-function-symbols>
     <elf-symbol name='_Z2fni' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-function-symbols>
index 8b9ba795d9b43f9403061e04f81ae0f4c548baf1..dee40fdad83bdeefae62805afbdd48b6fd285c3f 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='tests/data/test-read-dwarf/libtest24-drop-fns.so'>
+<abi-corpus version='2.2' path='tests/data/test-read-dwarf/libtest24-drop-fns.so'>
   <elf-needed>
     <dependency name='libgcc_s.so.1'/>
     <dependency name='libc.so.6'/>
index 6e6cb42479fc460ad48dade922139f59fd872520..b1b7bf2e596396f8eb3757f5e5f80ef32feff292 100644 (file)
@@ -1,4 +1,4 @@
-<abi-corpus version='2.1' path='tests/data/test-read-dwarf/libtest24-drop-fns.so'>
+<abi-corpus version='2.2' path='tests/data/test-read-dwarf/libtest24-drop-fns.so'>
   <elf-needed>
     <dependency name='libgcc_s.so.1'/>
     <dependency name='libc.so.6'/>
index f7ded109f2d31052bbd29571c864bfff97aa8459..22bc9b77a870a114ebc97d9b47d2c57af8884c04 100644 (file)
@@ -680,6 +680,28 @@ InOutSpec in_out_specs[] =
     "data/test-abidiff-exit/test-allow-type-region-v0--v5-report-2.txt",
     "output/test-abidiff-exit/test-allow-type-region-v0--v5-report-2.txt"
   },
+  {
+    "data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v0/test1.o",
+    "data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v1/test1.o",
+    "",
+    "",
+    "",
+    "--no-default-suppression",
+    abigail::tools_utils::ABIDIFF_ABI_CHANGE,
+    "data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-1.txt",
+    "output/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-1.txt"
+  },
+  {
+    "data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v0/test1.o",
+    "data/test-abidiff-exit/ada-subrange/test1-ada-subrange/v1/test1.o",
+    "",
+    "",
+    "",
+    "--no-default-suppression --leaf-changes-only",
+    abigail::tools_utils::ABIDIFF_ABI_CHANGE,
+    "data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-2.txt",
+    "output/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-2.txt"
+  },
 #ifdef WITH_BTF
   {
     "data/test-abidiff-exit/btf/test0-v0.o",