The Git repository of the Libabigail Project
Go to file
Dodji Seketeli 9fa5cc298c Filter out harmless diagnostics glitches due to some ODR violation
Suppose we have tree types which have the same name A.  The first A
comes from a binary B1 and the two others come from a binary B2.
Let's call them A{B1}{1}, A{B2}{1} and A{B2}{2}.

Suppose A{B1}{1} is different from A{B2}{1} (but both types are
compatible), just because one of their sub-types are different but are
compatible. So A{B1}{1} and A{B2}{1} are canonically different; they
have different canonical types.

But then, because of the One Definition Rule (ODR), A{B2}{1} and
A{B2}{2} are canonically equal.  But then let's suppose that A{B2}{2}
is structurally equal to A{B1}{1}.  So this implies that A{B1}{1} and
A{B2}{2} are canonically different, while being structurally equal.

Odd, but not impossible.  I noticed this while comparing the two
versions of libgromacs_d.so.0.0.0 involved in the comparison
referenced by bug https://bugzilla.redhat.com/show_bug.cgi?id=1283906.
But then that library is too big (and takes too much time) to be
included as a non regression test :(

Anyway, this patch detects this glitch and categorizes it so that the
resulting ABI change reports are filtered out.  Otherwise, this is
considered as an ABI change (because of the canonical different), for
which the reporter fails to provide details (because of the structural
equality).

	* src/abg-comp-filter.cc
	(class_diff_has_harmless_odr_violation_change): New static
	function.
	(harmless_filter::visit): Call it.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2015-12-08 14:14:09 +01:00
bash-completion Add bash-completion scripts for the libabigail tools 2015-11-23 08:18:48 +01:00
doc Add bash-completion scripts for the libabigail tools 2015-11-23 08:18:48 +01:00
include Fix internal name for pointers, typedefs and arrays 2015-12-08 14:14:09 +01:00
m4 Delete ltsugar.m4 and pkg.m4 files from m4/ 2015-01-06 09:54:45 +01:00
scripts Initial DOT work. 2013-07-23 23:13:55 +02:00
src Filter out harmless diagnostics glitches due to some ODR violation 2015-12-08 14:14:09 +01:00
tests Bug 19336 - Better handle redundantly qualified reference types 2015-12-08 14:11:22 +01:00
tools Bug 19336 - Better handle redundantly qualified reference types 2015-12-08 14:11:22 +01:00
.gitignore Update .gitignore 2014-11-01 12:10:06 +01:00
abigail.m4 For usage from within GCC set header path to $includedir/libabigail 2013-08-14 16:10:15 +02:00
AUTHORS Initial AUTHORS and README 2013-02-28 13:25:20 +01:00
ChangeLog Update ChangeLog for 1.0.rc0 2015-11-16 16:23:58 +01:00
COMMIT-LOG-GUIDELINES Allow introductory text in commit log and ignore it when generating ChangeLog 2014-11-18 23:18:06 +01:00
COMPILING Encourage people to use autoreconf -i 2015-10-01 10:40:51 +02:00
config.h.in Make abipkgdiff compare tar archives containing binaries 2015-08-22 14:32:20 +02:00
configure.ac Add bash-completion scripts for the libabigail tools 2015-11-23 08:18:48 +01:00
CONTRIBUTING Update the CONTRIBUTING file 2015-03-19 12:47:59 +01:00
COPYING Use a better wording for the COPYING file 2015-04-22 09:53:18 +02:00
COPYING-GPLV3 Update licence texts 2015-04-20 13:51:21 +02:00
COPYING-LGPLV2 Initial import of gen-changelog.py 2014-11-18 23:18:06 +01:00
COPYING-LGPLV3 LGPLv3 License the library 2013-07-23 23:13:55 +02:00
gen-changelog.py [gen-changelog] Make subject line always come first 2014-11-18 23:18:06 +01:00
install-sh Add missing autoconfiscation files into version control 2013-03-01 00:47:49 +01:00
libabigail.pc.in Make libxml2 a private dependency wrt pkconfig 2013-08-22 17:41:29 +02:00
ltmain.sh Add missing autoconfiscation files into version control 2013-03-01 00:47:49 +01:00
Makefile.am Add bash-completion scripts for the libabigail tools 2015-11-23 08:18:48 +01:00
README Fix wording in README 2015-09-05 10:30:00 +02: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, 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.