mirror of
git://sourceware.org/git/libabigail.git
synced 2025-02-01 14:21:37 +00:00
The Git repository of the Libabigail Project
6f7d84e508
Sincea little while, libabigail can now handle the presence of several different class types definition that have the same name. To handle that, we settled that for types originating from C, a decl-only class would be considered different from a definition of that class. Especially during type canonicalization. Now it seems that it's wrong to consider this only for C types. That is because the same class type foo, defined in a C header, can be compile either into a C++ compilation unit, or a C one, in the same binary. That is, in the same binary, a struct type foo can be seen defined in a C compilation unit *and* in a C++ compilation unit. So rigth now, the C++ struct type foo would compare equal to a decl-only struct foo, but the C struct type foo would compare different to a decl-only struct foo. This leads to spurious change reports, especiall in the nmap and mariadb package from Fedora 25, when we run selfcheck.py on fc25 critpath packages. This patch makes libabigail always consider -- during type canonicalization -- that a decl-only class is different from a definition of that class. Not only for C. * src/abg-comparison.cc (function_decl_diff::report): Don't report possible vtable changes between a decl-only class and its definition. * src/abg-ir.cc (type_base::get_canonical_type_for): Consider that a decl-only class is different from its definition when comparing types for the purpose of type canonicalization. (equals): In the class_or_union overload, only consider the global decl_only_class_equals_definition() property to know when to consider that a decl-only class is different from its definition when comparing two classes. * src/abg-reader.cc (build_class_decl): Read the size property of a class, even if it's a decl-only class. * src/abg-writer.cc (write_class_decl_opening_tag): Write size property of types even if the types are decl-only classes. * tests/data/test-annotate/test13-pr18894.so.abi: Adjust. * 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/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: Likewise. * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise. * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: 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/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/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/test9-pr18818-clang.so.abi: Likewise. Signed-off-by: Dodji Seketeli <dodji@redhat.com> |
||
---|---|---|
autoconf-archive | ||
bash-completion | ||
doc | ||
include | ||
m4 | ||
scripts | ||
src | ||
tests | ||
tools | ||
.gitignore | ||
abigail.m4 | ||
AUTHORS | ||
ChangeLog | ||
COMMIT-LOG-GUIDELINES | ||
COMPILING | ||
configure.ac | ||
CONTRIBUTING | ||
COPYING | ||
COPYING-GPLV3 | ||
COPYING-LGPLV2 | ||
COPYING-LGPLV3 | ||
default.abignore | ||
gen-changelog.py | ||
install-sh | ||
libabigail.pc.in | ||
ltmain.sh | ||
Makefile.am | ||
NEWS | ||
README | ||
release-text-template.txt | ||
VISIBILITY |
This is the Application Binary Interface Generic Analysis and Instrumentation Library. It aims at constructing, manipulating, serializing and de-serializing ABI-relevant artifacts. The set of artifacts that we are intersted is made of quantities like types, variable, fonctions and declarations of a given library or program. For a given library or program this set of quantities is called an ABI corpus. This library aims at (among other things) providing a way to compare two ABI Corpora (apparently the plural of corpus is copora, heh, that's cool), provide detailed information about their differences, and help build tools to infer interesting conclusions about these differences. You are welcome to contribute to this project after reading the files CONTRIBUTING and COMMIT-LOG-GUIDELINES files in the source tree. Communicating with the maintainers of this project -- including sending patches to be include to the source code -- happens via email at libabigail@sourceware.org.