libabigail/include
Dodji Seketeli d38ee66d6b comparison: Represent changed unreachable anonymous unions, structs & enums
Following the changes to represent changed anonymous unreachable enums,
this patch does the same for anonymous unreachable unions, classes and
structs.

Basically, without this patch, this change:

    union
    {
      int a;
      int b;
    };

    ------

    union
    {
      int a;
      int b;
      int c;
    };

yields:

    1 removed type unreachable from any public interface:

      [D] 'union {int a; int b;}' at test_1.c:1:1

    1 added type unreachable from any public interface:

      [A] 'union {int a; int b; int c;}' at test_2.c:1:1

But with the patch, it does yield:

    1 changed type unreachable from any public interface:

      [C] 'union {int a; int b;}' changed:
	type size hasn't changed
	1 data member insertion:
	  'int c' at test-anon-union-v1.c:5:1
	type changed from:
	  union {int a; int b;}
	to:
	  union {int a; int b; int c;}

	* include/abg-fwd.h (class_or_union_types_of_same_kind)
	(is_data_member_of_anonymous_class_or_union): Declare new
	functions.
	* include/abg-ir.h (lookup_data_member): Likewise, declare a new overload.
	* src/abg-ir.cc (class_or_union_types_of_same_kind)
	(lookup_data_member, is_data_member_of_anonymous_class_or_union):
	Define news functions & overloads.
	* src/abg-reporter-priv.cc (represent): When representing a change
	in the name of a data member, if the context is an anonymous type,
	use the non-qualified name of the data member, not its qualified
	name.
	* src/abg-comparison.cc
	(corpus_diff::priv::ensure_lookup_tables_populated): Handle
	deleted/added anonymous enums, unions, classes and structs
	similarly.  That is, if an anonymous type was removed and another
	one got added, if they both have data members (or enumerators) in
	common, then we are probably looking at an anonymous type that was
	changed.  This is because these anonymous types are named using
	their flat representation.
	* tests/data/test-abidiff-exit/test-anon-types-report-1.txt: New
	reference test comparison output.
	* tests/data/test-abidiff-exit/test-anon-types-v{0,1}.o: New
	binary tests input files.
	* tests/data/test-abidiff-exit/test-anon-types-v{0,1}.c: Source
	code of new binary test input.
	* tests/data/Makefile.am: Add the new test material above to
	source distribution.
	* tests/test-abidiff-exit.cc (in_out_specs): Add the test inputs
	above to this test harness.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2023-10-17 10:50:51 +02:00
..
abg-btf-reader.h Update the copyright notice for the BTF reader 2023-01-06 21:40:44 +01:00
abg-comp-filter.h Bug 29811 - Better categorize harmless unknown array size changes 2023-01-01 18:21:56 +01:00
abg-comparison.h Bug 30971 - Wrong interpretation of "has_data_member_inserted_at" 2023-10-17 10:32:38 +02:00
abg-config.h Update copyright year for 2023 2023-01-01 18:19:30 +01:00
abg-corpus.h corpus,tools-utils: Support loading a corpus, its deps & other binaries 2023-07-07 13:34:39 +02:00
abg-ctf-reader.h Update copyright year for 2023 2023-01-01 18:19:30 +01:00
abg-cxx-compat.h Update copyright year for 2023 2023-01-01 18:19:30 +01:00
abg-diff-utils.h Update copyright year for 2023 2023-01-01 18:19:30 +01:00
abg-dwarf-reader.h Update copyright year for 2023 2023-01-01 18:19:30 +01:00
abg-elf-based-reader.h Make fe_iface::initialize independent from the kind of interface 2023-07-07 13:34:15 +02:00
abg-elf-reader.h Make fe_iface::initialize independent from the kind of interface 2023-07-07 13:34:15 +02:00
abg-fe-iface.h Make fe_iface::initialize independent from the kind of interface 2023-07-07 13:34:15 +02:00
abg-fwd.h comparison: Represent changed unreachable anonymous unions, structs & enums 2023-10-17 10:50:51 +02:00
abg-hash.h Update copyright year for 2023 2023-01-01 18:19:30 +01:00
abg-ini.h Update copyright year for 2023 2023-01-01 18:19:30 +01:00
abg-interned-str.h Update copyright year for 2023 2023-01-01 18:19:30 +01:00
abg-ir.h comparison: Represent changed unreachable anonymous unions, structs & enums 2023-10-17 10:50:51 +02:00
abg-libxml-utils.h Update copyright year for 2023 2023-01-01 18:19:30 +01:00
abg-reader.h Update copyright year for 2023 2023-01-01 18:19:30 +01:00
abg-regex.h Update copyright year for 2023 2023-01-01 18:19:30 +01:00
abg-reporter.h Bug 29340 - Add support for Ada range types 2023-03-31 23:14:01 +02:00
abg-sptr-utils.h Update copyright year for 2023 2023-01-01 18:19:30 +01:00
abg-suppression.h suppression: Add "changed_enumerators_regexp" property 2023-10-17 10:50:51 +02:00
abg-tools-utils.h abipkgdiff: Initialize libxml2 to use it in a multi-thread context 2023-09-07 15:23:38 +02:00
abg-traverse.h Update copyright year for 2023 2023-01-01 18:19:30 +01:00
abg-version.h.in abidw: Add --abixml-version 2021-11-12 18:31:28 +01:00
abg-viz-common.h Update copyright year for 2023 2023-01-01 18:19:30 +01:00
abg-viz-dot.h Update copyright year for 2023 2023-01-01 18:19:30 +01:00
abg-viz-svg.h Update copyright year for 2023 2023-01-01 18:19:30 +01:00
abg-workers.h Update copyright year for 2023 2023-01-01 18:19:30 +01:00
abg-writer.h Update copyright year for 2023 2023-01-01 18:19:30 +01:00
Makefile.am Add support for BTF 2023-01-06 21:05:53 +01:00