mirror of
git://sourceware.org/git/libabigail.git
synced 2024-12-16 15:04:46 +00:00
The Git repository of the Libabigail Project
7f57aa7959
When doing self-comparison check of /usr/lib64/libjavascriptcoregtk-4.0.so.18.18.7 from webkit2gtk3-jsc-2.32.3-1.fc34.x86_64, reading back the abixml file fails because an empty typedef is used as the element type of an array. The empty typedef is there (in a transient manner) because the typedef is being built. First an empty typedef is built and then its underlying type is built. During the construction of the underlying type however (an enum), the empty typedef itself is used (as the naming typedef of the enum). But because its empty, an assert is violated during the construction of an array which element type is the (empty) typedef. A snake eating its own (half-baked) tail, so to speak. The patch fixes the issue by constructing the underlying (enum) type first. Once its constructed, then it's used to construct the typedef which is thus never empty, even in a transient manner. The patch adjusts the building of enums so that the naming typedef is built only once the enum itself is fully constructed. This breaks the vicious cycle exposed above. The offending RPM is too big to be added to the test suite. Which argues (yet again) for the implementation of a separate test suite that runs libabigail tests on a huge pile of RPMs without having to embed them in the tarball. We really ought to start that project. * src/abg-reader.cc (build_enum_type_decl): Set the naming typedef only after the enum is created and keyed. (build_typedef_decl): Build the underlying type of the typedef first. Signed-off-by: Dodji Seketeli <dodji@redhat.com> |
||
---|---|---|
autoconf-archive | ||
bash-completion | ||
doc | ||
include | ||
m4 | ||
relicensing-scripts | ||
scripts | ||
src | ||
tests | ||
tools | ||
.clang-format | ||
.gitignore | ||
abigail.m4 | ||
AUTHORS | ||
ChangeLog | ||
COMMIT-LOG-GUIDELINES | ||
COMPILING | ||
configure.ac | ||
CONTRIBUTING | ||
default.abignore | ||
gen-changelog.py | ||
install-sh | ||
libabigail.pc.in | ||
license-change-2020.txt | ||
LICENSE.txt | ||
ltmain.sh | ||
Makefile.am | ||
NEWS | ||
README | ||
release-text-template.txt | ||
update-copyright.sh | ||
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.