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> |
||
---|---|---|
.. | ||
empty-report.txt | ||
test-crc-0.xml | ||
test-crc-1.xml | ||
test-crc-2.xml | ||
test-crc-report-0-1.txt | ||
test-crc-report-1-0.txt | ||
test-crc-report-1-2.txt | ||
test-empty-corpus-0.xml | ||
test-empty-corpus-1.xml | ||
test-empty-corpus-2.xml | ||
test-enum0-report.txt | ||
test-enum0-v0.cc.bi | ||
test-enum0-v1.cc.bi | ||
test-enum1-report.txt | ||
test-enum1-v0.cc.bi | ||
test-enum1-v1.cc.bi | ||
test-namespace-0.xml | ||
test-namespace-1.xml | ||
test-namespace-report.txt | ||
test-PR18166-libtirpc.so | ||
test-PR18166-libtirpc.so.abi | ||
test-PR18791-report0.txt | ||
test-PR18791-v0.so.abi | ||
test-PR18791-v1.so.abi | ||
test-PR24552-v0.abi | ||
test-PR24552-v1.abi | ||
test-PR27616-squished-v0.abi | ||
test-PR27616-squished-v1.abi | ||
test-PR27616-v0.xml | ||
test-PR27616-v1.xml | ||
test-PR27985-report.txt | ||
test-PR27985-v0.c | ||
test-PR27985-v0.o | ||
test-PR27985-v0.o.abi | ||
test-PR27985-v1.c | ||
test-PR27985-v1.o | ||
test-PR27985-v1.o.abi | ||
test-qual-type0-report.txt | ||
test-qual-type0-v0.cc.bi | ||
test-qual-type0-v1.cc.bi | ||
test-struct0-report.txt | ||
test-struct0-v0.cc.bi | ||
test-struct0-v1.cc.bi | ||
test-struct1-report.txt | ||
test-struct1-v0.cc.bi | ||
test-struct1-v1.cc.bi | ||
test-var0-report.txt | ||
test-var0-v0.cc.bi | ||
test-var0-v1.cc.bi |