mirror of
git://sourceware.org/git/libabigail.git
synced 2025-03-10 08:37:41 +00:00
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> |
||
---|---|---|
.. | ||
test-abicompat | ||
test-abidiff | ||
test-abidiff-exit | ||
test-alt-dwarf-file | ||
test-annotate | ||
test-core-diff | ||
test-default-supprs | ||
test-diff-dwarf | ||
test-diff-dwarf-abixml | ||
test-diff-filter | ||
test-diff-pkg | ||
test-diff-pkg-ctf | ||
test-diff-suppr | ||
test-fedabipkgdiff | ||
test-ini | ||
test-kmi-whitelist | ||
test-lookup-syms | ||
test-read-btf | ||
test-read-common | ||
test-read-ctf | ||
test-read-dwarf | ||
test-read-write | ||
test-symtab | ||
test-types-stability | ||
test-write-read-archive | ||
Makefile.am |