The Git repository of the Libabigail Project
Go to file
Dodji Seketeli 6381bbebe6 dwarf-reader: Speed-up decl-only resolution
After the IR is constructed, decl-only classes and enums are resolved
to their definition, for cases where the link between the declaration
and the definition is not obviously stated in the DWARF
representation.

During that resolution, it often happens that types are compared.  As
that comparison happens before type canonicalization, the comparison
is structural.  So it takes time and it can take forever.

As pre-canonicalization type comparison happens between artifacts that
are from the same binary, we can consider that two types of the same
name and kind having the same source location are equivalent.

This optimization speeds up things A LOT.  So much so that
self-comparing the usr/libexec/gcc/s390x-redhat-linux/12/gnat1 binary
(from the gcc-gnat package) now takes less than 4 minutes, down from
more than one hour!

	* src/abg-dwarf-reader.cc
	(reader::compare_before_canonicalisation): If the two types being
	compared are of the same kind and name, and are declared at the
	same source location, then they ought to be equivalent.
	* tests/data/test-annotate/test14-pr18893.so.abi: Adjust.
	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
	Likewise.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2024-08-29 17:15:43 +02:00
.github Adding missing newline to build-container workflow 2022-05-17 09:46:16 +02:00
autoconf-archive Replace individual license references with SPDX Identifiers 2020-12-02 11:44:13 +01:00
bash-completion Re-license the project to Apache v2 With LLVM Exception 2020-12-02 11:49:13 +01:00
big-tests@8447ddfd40 configure: Support the optional 'big-tests' sub-directory 2024-07-16 12:59:03 +02:00
doc doc/api/libabigail.doxy: Update to newer version. 2024-04-18 17:52:22 +02:00
docker Add github actions to support workflows 2022-05-17 00:13:40 +02:00
include dwarf-reader: Avoid duplicating anonymous member types 2024-08-29 17:15:43 +02:00
m4 Delete ltsugar.m4 and pkg.m4 files from m4/ 2015-01-06 09:54:45 +01:00
relicensing-scripts Bug 27512 - Remove broken zip-archive support 2021-03-19 10:52:57 +01:00
scripts Re-license the project to Apache v2 With LLVM Exception 2020-12-02 11:49:13 +01:00
src dwarf-reader: Speed-up decl-only resolution 2024-08-29 17:15:43 +02:00
tests dwarf-reader: Speed-up decl-only resolution 2024-08-29 17:15:43 +02:00
tools abipkgdiff: Make --verbose enable the library's logging 2024-08-29 15:20:42 +02:00
.clang-format Tweak clang-format configuration 2021-10-19 12:59:18 +02:00
.gitignore .gitignore: Add libabigail-?.* *.orig files 2019-05-22 14:34:23 +02:00
.gitmodules configure: Support the optional 'big-tests' sub-directory 2024-07-16 12:59:03 +02:00
.mailmap Add '.mailmap' 2021-12-17 20:12:20 +01:00
abigail.m4 Re-license the project to Apache v2 With LLVM Exception 2020-12-02 11:49:13 +01:00
ABIXML-FORMAT-VERSIONS Bug 28450 - Fix cloned member function handling in DWARF 2021-11-12 18:31:28 +01:00
AUTHORS Initial AUTHORS and README 2013-02-28 13:25:20 +01:00
ChangeLog ChangeLog: Update for 2.5 release 2024-04-18 12:18:06 +02:00
COMMIT-LOG-GUIDELINES Update the COMMIT-LOG-GUIDELINES file 2016-05-22 23:20:12 +02:00
COMPILING Improve some grammar 2022-02-25 11:24:20 +01:00
configure.ac ir: Remove the now useless type propagation optimization 2024-08-29 17:15:43 +02:00
CONTRIBUTING configure: Support the optional 'big-tests' sub-directory 2024-07-16 12:59:03 +02:00
default.abignore Bug 31646: Fix type suppression tactics for webkit2gtk3 2024-04-16 17:46:19 +02:00
gen-changelog.py gen-changelog.py: Remove long standing debugging output 2023-10-20 18:35:59 +02:00
install-sh Replace individual license references with SPDX Identifiers 2020-12-02 11:44:13 +01:00
libabigail.pc.in Make libxml2 a private dependency wrt pkconfig 2013-08-22 17:41:29 +02:00
license-change-2020.txt Add a license-change-2020.txt file 2020-12-02 11:50:22 +01:00
LICENSE.txt Add the LICENSE.txt file 2020-12-02 11:49:33 +01:00
ltmain.sh Replace individual license references with SPDX Identifiers 2020-12-02 11:44:13 +01:00
Makefile.am configure: Support the optional 'big-tests' sub-directory 2024-07-16 12:59:03 +02:00
NEWS NEWS: Update for 2.5 release 2024-04-18 12:17:30 +02:00
README Improve some grammar 2022-02-25 11:24:20 +01:00
README-DOCKER.md Add github actions to support workflows 2022-05-17 00:13:40 +02:00
release-text-template.txt release-text-template.txt: Modernize a little bit. 2023-05-10 16:29:55 +02:00
update-copyright.sh Update Copyright for year 2024 2024-04-26 15:29:50 +02:00
VISIBILITY Improve some grammar 2022-02-25 11:24:20 +01:00

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, functions 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.