libabigail/include
Dodji Seketeli d8de76cfa8 ir: Use non qualified typedef name for type canonicalization
While looking into fixing self-comparison errors for the gcc-gnat
package[1], I stumbled upon the fact that a typedef that is defined in
the global scope is different from a typedef defined in a scope, even
if they both point to the same underlying type.  This is a spurious
difference that feeds a spurious explosion of the number of canonical
types, for no reason.  It can lead to spurious self-comparison errors
down the road.  Sadly, fixing this issue is not enough to fix the
self-comparison error in [1].

[1]: The command is:

    $ fedabipkgdiff --self-compare  -a --from fc37 gcc-gnat

	* include/abg-ir.h (reference_type_def::{pointed_to_type_,
	is_lvalue_}): Remove these data members.
	(reference_type_def::priv_): Add a unique data member.
	(typedef_decl::get_qualified_name): Add new virtual member
	functions.
	* src/abg-ir.cc (get_decl_name_for_comparison): If the decl we are
	comparing is a typedef, only consider its non-qualified name.
	(get_type_name): For internal purposes, the type name of a typedef
	is its non-qualified name.
	(pointer_type_def::get_qualified_name): For internal purposes, if
	the pointed-to name is a typedef, use the non-qualified name of
	the typedef.
	(reference_type_def::priv): Define new data type.
	(reference_type_def::reference_type_def): Initialize the new
	reference_type_def::priv_ data member and adjust to the move of
	the reference_type_def::pointed_to_type_ data member to
	reference_type_def::priv::pointed_to_type_.
	(reference_type_def::{s,g}et_pointed_to_type): Adjust.
	(reference_type_def::is_lvalue): Likewise.
	(reference_type_def::get_qualified_name): Support caching
	qualified names for internal and non-internal purposes.
	(typedef_decl::get_pretty_representation): For internal purposes,
	use non-qualified typedef name.
	(typedef_decl::get_qualified_name): Define the two overloads for
	this virtual member function.
	(function_decl::get_pretty_representation): Use the
	'qualified_name' parameter.  Also, rather than systematically
	using the qualified name of the return type, use get_type_name
	instead that knows when to use qualified names and when not to.
	(qualified_name_setter::do_update):
	* tests/data/test-abidiff/test-PR18791-report0.txt: 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/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/test20-pr19025-libvtkParallelCore-6.1.so.abi:
	Likewise.
	* tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt:
	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/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-libaaudio.so.abi: Likewise.
	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
	* tests/data/test-read-dwarf/test0.hash.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/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/test20-pr19025-libvtkParallelCore-6.1.so.abi:
	Likewise.
	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
	Likewise.
	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: 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>
2023-09-07 15:23:38 +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 29340 - Add support for Ada range types 2023-03-31 23:14:01 +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 ir: Really avoid canonicalizing decl-only classes 2023-09-07 15:23:38 +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 ir: Use non qualified typedef name for type canonicalization 2023-09-07 15:23:38 +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 Misc white space fixes 2023-03-02 18:31:43 +01: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