The Git repository of the Libabigail Project
Go to file
Giuliano Procida 8e8e0778f2 Use pointers not strings in type graph comparison.
During structural comparison of types there is the possibilitiy of
infinite recursion as types can have self-references and there can
be more elaborate mutual references between them.

The current comparison algorithm keeps track of currently seen (struct
and function) types by name. This causes earlier caching of names than
is needed and, more significantly, may result in types comparing equal
unexpectedly. This commit switches to storing their addresses instead.

This change affects some tests which show more diffs than previously.

	src/abg-ir.cc: (environment::priv): Change types of
	classes_being_compared_ and fn_types_being_compared_ to be
	simple sets of pointers.
	(function_type::priv::mark_as_being_compared): Just add
	address to set.
	(function_type::priv::unmark_as_being_compared): Just remove
	address from set.
	(function_type::priv::comparison_started): Just look up
	address in set.
	(class_or_union::priv::mark_as_being_compared): Just add
	address to set.
	(class_or_union::priv::unmark_as_being_compared): Just remove
	address from set.
	(class_or_union::priv::comparison_started): Just look up
	address in set.
	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt:
	Update.
	* tests/data/test-diff-pkg/elfutils-libs-0.170-4.el7.x86_64-multiple-sym-vers-report-0.txt:
	Update.
	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
	Update.
	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
	Update.

Signed-off-by: Giuliano Procida <gprocida@google.com>
2020-07-09 10:02:53 +02:00
autoconf-archive
bash-completion
doc abg-writer: Add support for stable hash type ids. 2020-06-16 10:13:01 +02:00
include Support incomplete enums in core and diff code. 2020-07-08 16:59:56 +02:00
m4
scripts
src Use pointers not strings in type graph comparison. 2020-07-09 10:02:53 +02:00
tests Use pointers not strings in type graph comparison. 2020-07-09 10:02:53 +02:00
tools abg-writer: Add support for stable hash type ids. 2020-06-16 10:13:01 +02:00
.clang-format clang-format: set continuation indentation to 2 2020-05-18 10:48:09 +02:00
.gitignore
abigail.m4 abigail.m4: Fix copyright notice 2020-05-29 18:11:10 +02:00
AUTHORS
ChangeLog
COMMIT-LOG-GUIDELINES
COMPILING
configure.ac Add -g back to ABIGAIL_DEVEL 2020-05-18 13:40:42 +02:00
CONTRIBUTING
COPYING
COPYING-GPLV3
COPYING-LGPLV2
COPYING-LGPLV3
default.abignore
gen-changelog.py
install-sh
libabigail.pc.in
ltmain.sh
Makefile.am make: add distcheck-fast target 2020-04-20 14:38:32 +02:00
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.