[applied] Bug 31513 - abidiff considers data members moved to base class as harmful

Message ID 87r0fom72n.fsf@redhat.com
State New
Headers
Series [applied] Bug 31513 - abidiff considers data members moved to base class as harmful |

Commit Message

Dodji Seketeli April 2, 2024, 9:45 a.m. UTC
  Hello,

Consider the 'struct type' below and its use in the file
example-v0.cc:

    //----> example-v0.cc: <------
    struct type
    {
      int m0;
    };

    int
    use(type& t)
    {
      return t.m0;
    }
    //---->8<-----

Now, consider a second version of that program where the data member
of the 'struct type' is moved into a base class:

    //----> example-v1.cc: <------
    struct base
    {
      int m0;
    };

    struct type : public base
    {
    };

    int
    use(type& t)
    {
      return t.m0;
    }
    //---->8<------

The first and second version of 'struct type' are ABI compatible
because neither the size of 'struct type' nor the offset of the data
member m0 has changed.

But then look at what abidiff says:

    $ abidiff example-v0.o example-v1.o || echo "exit code: $?"
    Functions changes summary: 0 Removed, 1 Changed, 0 Added function
    Variables changes summary: 0 Removed, 0 Changed, 0 Added variable

    1 function with some indirect sub-type change:

      [C] 'function int use(type&)' at example-v0.cc:7:1 has some indirect sub-type changes:
	parameter 1 of type 'type&' has sub-type changes:
	  in referenced type 'struct type' at example-v1.cc:6:1:
	    type size hasn't changed
	    1 base class insertion:
	      struct base at example-v1.cc:1:1
	    1 data member deletion:
	      'int m0', at offset 0 (in bits) at example-v0.cc:3:1

    exit code: 4
    $

abidiff considers that the mere addition of a base class constitutes a
potential ABI incompatibility.

Also, abidiff fails to see that although the data member m0 was
removed from 'struct type' itself, it was moved into its new base
type.  In practice, the data member m0 is still a member of 'struct
type', by definition of class type inheritance.

Thus, the exit code of abidiff is ABIDIFF_ABI_CHANGE which value is 4.

This patch fixes this problem.

First of all, here is what abidiff now says with this patch:

    $ abidiff example-v0.o example-v1.o && echo "return code: $?"
    Functions changes summary: 0 Removed, 0 Changed (1 filtered out), 0 Added function
    Variables changes summary: 0 Removed, 0 Changed, 0 Added variable

    return code: 0
    $

In other words, abidiff now recognizes the changes as being ABI
compatible and filters them out by default.

Furthermore, here are the changes that abidiff sees when asked to
avoid filtering these (now considered harmless) changes:

    $ abidiff --harmless example-v0.o example-v1.o && echo "return code: $?"
    Functions changes summary: 0 Removed, 1 Changed, 0 Added function
    Variables changes summary: 0 Removed, 0 Changed, 0 Added variable

    1 function with some indirect sub-type change:

      [C] 'function int use(type&)' at example-v0.cc:7:1 has some indirect sub-type changes:
	parameter 1 of type 'type&' has sub-type changes:
	  in referenced type 'struct type' at example-v1.cc:6:1:
	    type size hasn't changed
	    1 base class insertion:
	      struct base at example-v1.cc:1:1

    $

We can see that abidiff no longer considers that the data member m0
was deleted.

At its core, this patch teaches
class_diff::ensure_lookup_tables_populated to detect data members
being moved to base classes.  That detection prevents the code base to
consider those data members as being removed from the class.

Now that the moved data members are not considered as removed, the
patch goes further to consider data member moves to base classes that
are not accompanied with any size or offset change as being harmless,
and thus, to be filtered out by default.

To that end, the patch teaches categorize_harmful_diff_node that an
added base classes is not necessarily a harmful change if it is not
accompanied with a size or offset change.  Rather, an added base
classes (or any change to a class) not accompanied with a size or
offset change is now categorized into
HARMLESS_UNION_OR_CLASS_CHANGE_CATEGORY.  Note that the previous
HARMLESS_UNION_CHANGE_CATEGORY was renamed into
HARMLESS_UNION_OR_CLASS_CHANGE_CATEGORY.

Incidentally, a removal of a base class or any change accompanied with
an offset change is always categorized as harmful change.

The patch also adds several non-regression tests.

	* include/abg-comparison.h (typedef string_decl_base_sptr_map):
	Move this typedef to include/abg-fwd.h:
	(HARMLESS_UNION_OR_CLASS_CHANGE_CATEGORY): Inside the enum
	diff_category, rename the enumerator
	HARMLESS_UNION_CHANGE_CATEGORY into this.
	(EVERYTHING_CATEGORY): Adjust this enum to refer to
	HARMLESS_UNION_OR_CLASS_CHANGE_CATEGORY, no more HARMLESS_UNION_CHANGE_CATEGORY
	* include/abg-fwd.h (typedef string_decl_base_sptr_map): Move this
	typedef here from abg-comparison.h
	(collect_non_anonymous_data_members): Declare new function.
	* src/abg-comp-filter.cc (has_offset_changes)
	(type_has_offset_changes, has_offset_changes)
	(has_subtype_changes, class_diff_has_only_harmless_changes):
	Define new static functions.
	(base_classes_removed): Rename base_classes_added_or_removed into
	this and update comment.
	(categorize_harmless_diff_node): Changes that were categorized as
	HARMLESS_UNION_CHANGE_CATEGORY is now categorized as
	HARMLESS_UNION_OR_CLASS_CHANGE_CATEGORY.  Also, a diff that
	satisfies either union_diff_has_harmless_changes or
	class_diff_has_only_harmless_changes is categorized as
	HARMLESS_UNION_OR_CLASS_CHANGE_CATEGORY.
	(categorize_harmful_diff_node): Adjust to invoke
	base_classes_removed instead of base_classes_added_or_removed.  An
	added base class doesn't necessarily qualifies as a harmful change
	anymore.  Rather, a diff node that carries an offset change as
	detected by type_has_offset_changes is categorized as
	SIZE_OR_OFFSET_CHANGE_CATEGORY.
	* src/abg-comparison.cc (get_default_harmless_categories_bitmap):
	Adjust to use
	abigail::comparison::HARMLESS_UNION_OR_CLASS_CHANGE_CATEGORY
	rather than abigail::comparison::HARMLESS_UNION_CHANGE_CATEGORY.
	(operator<<(ostream& o, diff_category c)): Likewise.
	(class_diff::ensure_lookup_tables_populated): Detect data members
	that are moved into base classes to avoid considering those data
	members as being removed from the class.
	* src/abg-default-reporter.cc (default_reporter::report): Adjust
	to use HARMLESS_UNION_OR_CLASS_CHANGE_CATEGORY rather than
	HARMLESS_UNION_CHANGE_CATEGORY.
	* src/abg-ir.cc (collect_non_anonymous_data_members): Define
	function overloads.
	* tests/data/test-abidiff-exit/PR31513/non-regr/libtest[1-4]-v{0,1}.so:
	New binary test input files.
	* tests/data/test-abidiff-exit/PR31513/non-regr/report[1-4.txt:
	New reference output files.
	* tests/data/test-abidiff-exit/PR31513/non-regr/test[1-4]-v{0,1}.cc:
	Source code of the binary input files above.
	* tests/data/test-abidiff-exit/PR31513/reported/PR31513-reported-report-{1,2}.txt:
	New reference output files.
	* tests/data/test-abidiff-exit/PR31513/reported/libloremipsum_gcc{7,11}.so:
	New binary test input files.
	* tests/data/test-abidiff-exit/PR31513/reported/libstdcpp.suppr:
	New test suppression file.
	* tests/data/Makefile.am: Add new test files above to source
	distribution.
	* tests/test-abidiff-exit.cc (in_out_specs): Add the new input
	test files to this test harness.
	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
	Adjust.
	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
	Adjust.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
Applied to the master branch.
---
 include/abg-comparison.h                      |  10 +-
 include/abg-fwd.h                             |  10 +
 src/abg-comp-filter.cc                        | 255 +++++++++++++++++-
 src/abg-comparison.cc                         |  46 +++-
 src/abg-default-reporter.cc                   |   2 +-
 src/abg-ir.cc                                 |  68 +++++
 tests/data/Makefile.am                        |  26 ++
 .../PR31513/non-regr/libtest1-v0.so           | Bin 0 -> 16768 bytes
 .../PR31513/non-regr/libtest1-v1.so           | Bin 0 -> 16800 bytes
 .../PR31513/non-regr/libtest2-v0.so           | Bin 0 -> 16768 bytes
 .../PR31513/non-regr/libtest2-v1.so           | Bin 0 -> 16816 bytes
 .../PR31513/non-regr/libtest3-v0.so           | Bin 0 -> 16768 bytes
 .../PR31513/non-regr/libtest3-v1.so           | Bin 0 -> 16824 bytes
 .../PR31513/non-regr/libtest4-v0.so           | Bin 0 -> 16768 bytes
 .../PR31513/non-regr/libtest4-v1.so           | Bin 0 -> 16824 bytes
 .../PR31513/non-regr/report1.txt              |  12 +
 .../PR31513/non-regr/report2.txt              |  12 +
 .../PR31513/non-regr/report3.txt              |  12 +
 .../PR31513/non-regr/report4.txt              |  16 ++
 .../PR31513/non-regr/test1-v0.cc              |  13 +
 .../PR31513/non-regr/test1-v1.cc              |  16 ++
 .../PR31513/non-regr/test2-v0.cc              |  13 +
 .../PR31513/non-regr/test2-v1.cc              |  17 ++
 .../PR31513/non-regr/test3-v0.cc              |  13 +
 .../PR31513/non-regr/test3-v1.cc              |  17 ++
 .../PR31513/non-regr/test4-v0.cc              |  13 +
 .../PR31513/non-regr/test4-v1.cc              |  17 ++
 .../reported/PR31513-reported-report-1.txt    |  58 ++++
 .../reported/PR31513-reported-report-2.txt    |   5 +
 .../PR31513/reported/libloremipsum_gcc11.so   | Bin 0 -> 115160 bytes
 .../PR31513/reported/libloremipsum_gcc7.so    | Bin 0 -> 103808 bytes
 .../PR31513/reported/libstdcpp.suppr          |  19 ++
 ...bb-4.3-3.20141204.fc23.x86_64-report-0.txt |  73 +----
 ...bb-4.3-3.20141204.fc23.x86_64-report-1.txt |  47 +---
 tests/test-abidiff-exit.cc                    |  90 +++++++
 35 files changed, 743 insertions(+), 137 deletions(-)
 create mode 100755 tests/data/test-abidiff-exit/PR31513/non-regr/libtest1-v0.so
 create mode 100755 tests/data/test-abidiff-exit/PR31513/non-regr/libtest1-v1.so
 create mode 100755 tests/data/test-abidiff-exit/PR31513/non-regr/libtest2-v0.so
 create mode 100755 tests/data/test-abidiff-exit/PR31513/non-regr/libtest2-v1.so
 create mode 100755 tests/data/test-abidiff-exit/PR31513/non-regr/libtest3-v0.so
 create mode 100755 tests/data/test-abidiff-exit/PR31513/non-regr/libtest3-v1.so
 create mode 100755 tests/data/test-abidiff-exit/PR31513/non-regr/libtest4-v0.so
 create mode 100755 tests/data/test-abidiff-exit/PR31513/non-regr/libtest4-v1.so
 create mode 100644 tests/data/test-abidiff-exit/PR31513/non-regr/report1.txt
 create mode 100644 tests/data/test-abidiff-exit/PR31513/non-regr/report2.txt
 create mode 100644 tests/data/test-abidiff-exit/PR31513/non-regr/report3.txt
 create mode 100644 tests/data/test-abidiff-exit/PR31513/non-regr/report4.txt
 create mode 100644 tests/data/test-abidiff-exit/PR31513/non-regr/test1-v0.cc
 create mode 100644 tests/data/test-abidiff-exit/PR31513/non-regr/test1-v1.cc
 create mode 100644 tests/data/test-abidiff-exit/PR31513/non-regr/test2-v0.cc
 create mode 100644 tests/data/test-abidiff-exit/PR31513/non-regr/test2-v1.cc
 create mode 100644 tests/data/test-abidiff-exit/PR31513/non-regr/test3-v0.cc
 create mode 100644 tests/data/test-abidiff-exit/PR31513/non-regr/test3-v1.cc
 create mode 100644 tests/data/test-abidiff-exit/PR31513/non-regr/test4-v0.cc
 create mode 100644 tests/data/test-abidiff-exit/PR31513/non-regr/test4-v1.cc
 create mode 100644 tests/data/test-abidiff-exit/PR31513/reported/PR31513-reported-report-1.txt
 create mode 100644 tests/data/test-abidiff-exit/PR31513/reported/PR31513-reported-report-2.txt
 create mode 100644 tests/data/test-abidiff-exit/PR31513/reported/libloremipsum_gcc11.so
 create mode 100644 tests/data/test-abidiff-exit/PR31513/reported/libloremipsum_gcc7.so
 create mode 100644 tests/data/test-abidiff-exit/PR31513/reported/libstdcpp.suppr

new file mode 100755
index 0000000000000000000000000000000000000000..a33440914ff0a6b9ac7dd081cb1c0eada0b41722
GIT binary patch
literal 16800
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
VvIInU)2WYt^GOA80)T)h{sS|k_}Tyf

literal 0
HcmV?d00001

new file mode 100755
index 0000000000000000000000000000000000000000..3b6817902e01554bbed4c88426d949375a627d11
GIT binary patch
literal 16816
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
S;Z3J8{_0aczzzTcqWBNJCif5k

literal 0
HcmV?d00001

new file mode 100755
index 0000000000000000000000000000000000000000..842368a9c5f4f8e9d5da5d48fd78c2b6f17bfbe4
GIT binary patch
literal 16824
zcmeHOYit}>6~43f+H2NX+jUd&Xz?U+q&&J~ubre$BPVtoJL?jssgsDbs7z*e$GZ!=
zJMQc_u~Pv-Ayw0;A`ue&0ab!OL4X7jFBOCw6-5D+Du_Q35|Skp<RU~<A*zH*S<bol
zob_h9+eG<+K$>gqoacAWoilfK?s)J0^7z4tkfsT4O=6E&k%Sl_!_Y4FK;4jt!f~V6
zAbp!xOdsKrVWna!I+ct$q={tKGkt<O!Ibr=micrQNBHPhNzJqt*8;Z1xN=w=zLzFL
zN<K`KaVR402H|cHj_EDxC)0=uBm0Q`yiD=@w4eN#`f)c1=cm1dV~RPj9l7ac9wy&m
z!ujjS^5ZJJV9NQP102@nK^tG@Y0B5=I*ibHGo|v%dg_o2$IO94$6(xPi`W;ohe!sM
zY-oEFK27jJ|F^gP_~v)7EngizaV~rIZ(sY>;v1j4fsU9CV`3b2J`o*Q*--!I%*zQ9
z>yio3ZmeU$^VRF<F;6}HlMVF8K>vtn7k8+Dt3j5{G_ysgWR^Y4^-NQklSik_jP2Ul
zeA%<zqf=uAr(_?sQUzPt>RZh8yk*YhOI9I&8XR93oN=7#?cTzyEeiQm*~_H2Z8OS_
zu@l8&mCL5nW*Maf>eEVp;NaxGF>}BeFm_-M;fl~7O30rF%Hv>eUA_%{zK%v{d_VGi
zaElzT(f!8yACdmLPtWqTy(%7FORP1w>os~BV$yV@Mvr5K+ft35$Go(SD34YkwegiU
zI0h96DiBm4s6bGGpaMY!f(ir`_}{L;KRZ74@8sFPN0Jx9zwHwud2Z1QRjwz`{wDI4
z?099z??7GI^fnwjdPaalIfu4)mnxM?^7Y{>h<iQ!CX!vZz10xvB=Qidt+Le7a|WH?
zA`1SOr2mfBkZie|Jbx>B<sW;KS8g{YwX4ZL-1Q!X0OJ%OQdyem=-I!5$Nrufo&vL&
z+jcB@b~uD=^88J&9YWuQ*Qn*^p<BxtI9v^H0;BdK<gVsN{JW>XcnmPf^IyE3yfA*d
z<7Xqy9lu_D5l*>Uk7@<5_dyFP5L6(jKv0380zn0W3Ir7hDiBm4s6bGGpaTEj70}i<
z?Z)4B@i#I3R;4lo^bXJyK(XO(sMxgA(?Xl?)YiARMlQk+U%jA1+|qlMiVjr7IwxXl
zp6Q65ikuO9*X`aq*eib)MIU&57ndNW{Oxiy*7-_kY*ou)2!yzx1r-P?5L6(jKv038
z0zn0W3Ir7hDiBm4sK5hNfY(X-*G2N$#1utg`6ZwHvQNe}n%LSEsV>-DMRI4CV%Cz(
z>o(Vu%<pvTNappM_#TLj?f<%4aioG4UCOoKp!fyJyta5V$)AwULcBpVN^}iTaudt6
zZj;w|vYp>!aor}iPbwn%DKYC`rNy4y&&%Woi&bUgcy}wR|2gu9UzFwfaGl|GSIWo9
zeurf4Cx!d35niwEPq>rT(;gTbds^QNE2X#SiS0(ek<bVF2e$VQ3=HX;r|pcMv^+Az
z`?o+4tdE4k2_G2k)dsDE7@=59>-q2k;K#_fo)3?)H8j@h`EU+i7hTUMMtG(V>%)Cr
z|1o{$zCJ-YaXq&hgP0Zmr$X53`faIQIs6>hu+XHl95NgBk+B{!R03n@1vqHMe$m{D
z9Iy!yj#$7oYsCT4(v|}@BErq#e903{TFV)bo0^+Z9m4y*4HYd09E50vh2KJpX=UIs
znm?=dt)GB4;(<>TxzMGYXp5*Jze+Skp5CDCj_!(1b`Qaw8S2)WV$lulO1UATbwlD_
z5smJNHpQTOUD~EtceJTzeNUJ6NNXqDi(#_D`L{eSRFqaj+q)JbM=@|IHrb8NBWq5t
z#c+`@CY7ei?hxFSZJiK*5-eg0K4CcVtw1$R`!Kc&3Er6S0j3985z=}>9U)m{c?fHw
zEyQQt6w|`(XT#bLL$HcngS$c>+qNz7)C1fadc5e(mF(fHU9#PL8br%Y=Z5EpcE)#Z
z*W+0|KI6>H6dWrPcV@l3Qz{R~3ntusW>KKp6Dh0gTZx~}S+3~IIYqlK<77Uc@5|=B
zK3I2erSe%TU+A03&)em`S=Y16Ub*k^^k8B~Vz3Vu{JVC!3@PH$An-UCKbbJnX)Hkf
zhP7!H?^pa*{QeKYQ-SY0ws(+zmc}>hH<F&8OROIPMiY;T$cWO&YXR(jsqYf}yiisl
zz5op7<>wshPf7pI>b?Qie*>6${r^q_{SRcE4sk{Y#@Fh_c~knpAlC17{ym5q?9||W
z2yFcmFd?x@@OK*Pm!uw^YQDPt74(|u7XI(+_oRMxwQeBF_8}ZKvAX))Bem#)!s0dX
zw<kfb`;{Ok8|XjNK>rfx>+VZQyIu-5p_Gmoj#$}`VtPe0jXP4x!Zb6EnJqXet6*k4
z$1R)I+`LFT#o2=G*%_n1z6b77$(xqzS_`IK^4tY6<61@A%*+*w3jnE+Oz`yXajhNt
z&_TPD!S0#n#PsOYxH*1kKklG0;XXIVlcY@UpT>@q9W!T@GPsKdJ0N6iVeWta(CF0U
z7<j-=8xC;b;IsQi51P+TOdJ_MY91ZkcW@lT)^4#Gsof;=v3qvvZ11VRg{OAUjxfp#
zMbAnB^;|`B%#|F^HnOETW7c(MZP!~6Mpc!X%NH{7d`3uzoK?;VBePI~V2XOKvYfPC
z{6e`$Fu~^91q%Vh%@#ai;6)IIXV1e?md>zqbd_=$z_6q|)#Xy2%x5gm!qA56$ZlB0
zd>T?a5D*TA%#tdXg#m-72xCHZOP-5id7hh3&B28SsGXY2LQt!eT@mx88H}n-sg!G<
zWT}uZ*~~-nm_;>gw{q*;JP)D5`7+KqLxgR#KafMqi2(~h@u^*lZ?sR4Av6tTQH%oj
z0nAA`zuYK?R+^ypk|*Q*`9BSIoP#r-=jlu@5}x<gF`nnoN5GD$7|-*5raaH5Fz_9B
zZ~H8WIOk?O&$F5G`wRD<{g~zek8}8{OpZLC*D0O9|D+c9{6Prg`MrVZWpd>F{`3C|
z;rEdrzlSj8Iw2nCjDGwD&|yvZJ*oN}q2~#XuiD1_VBIUg)Z%r*RVh0X<;N7$OFsMv
z8JND)0MF`g`tbaGWQy~R+UD>7x50@0=lTnsyovJrCTZohVjk)D;Zuv(b<_&MG^51o
zk?YTjp8^B30KQ$S^AO(G>i1`v=@r1@+=<@@dERp^4oYb3r=%5`^=iJcg6Db1_50vC
z9?nZ}>~MabZ}2{6-p|bM<(!wV|6c%$^<zBmyS&y1N@%(~t{fQ8bQw&wcz$nRen9;D
zfX7&zpXZa2ewCB+C`sjF9_a`0!TjWoD%lv1-><a|eX%jc2{QlB0QH?G@F>I(1=QJ5
zsXsFQR)gK=B0Y~M6u{pvzi)2?{HuijCFNz}$M-kDj}0iqMFtY}<M%Yc|B>*|-3R{+
z;r-{?JE(x?8sNDf#~R?jNBBec!DF22cSnuyZNeWXqYgIw-w}@|{$9ra2l3bgw%QKw
bRP2|yqh#@kq6_r(@b5gO0Jaa{6UBc3RP_K%

literal 0
HcmV?d00001

new file mode 100755
index 0000000000000000000000000000000000000000..52172876278c56e15baeb31f573601255e8885ee
GIT binary patch
literal 16824
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
Ttmp)JJ^b$<R{$pf2(aQmyRZ8B

literal 0
HcmV?d00001

new file mode 100644
index 0000000000000000000000000000000000000000..6df2842e648853e962faaf860a376a49a409116b
GIT binary patch
literal 103808
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
J6(Wz${{u@^S6=`C

literal 0
HcmV?d00001
  

Patch

diff --git a/include/abg-comparison.h b/include/abg-comparison.h
index a395210d..163453de 100644
--- a/include/abg-comparison.h
+++ b/include/abg-comparison.h
@@ -120,10 +120,6 @@  typedef shared_ptr<class_diff> class_diff_sptr;
 /// associated to the first one.
 typedef unordered_map<size_t, size_t> pointer_map;
 
-/// Convenience typedef for a map which key is a string and which
-/// value is a @ref decl_base_sptr.
-typedef unordered_map<string, decl_base_sptr> string_decl_base_sptr_map;
-
 /// Convenience typedef for a map which key is a string and which
 /// value is a @ref type_base_sptr.
 typedef unordered_map<string, type_base_sptr> string_type_base_sptr_map;
@@ -357,8 +353,8 @@  enum diff_category
   HARMLESS_SYMBOL_ALIAS_CHANGE_CATEGORY = 1 << 6,
 
   /// This means that a diff node in the sub-tree carries a harmless
-  /// union change.
-  HARMLESS_UNION_CHANGE_CATEGORY = 1 << 7,
+  /// union or class change.
+  HARMLESS_UNION_OR_CLASS_CHANGE_CATEGORY = 1 << 7,
 
   /// This means that a diff node in the sub-tree carries a harmless
   /// data member change.  An example of harmless data member change
@@ -455,7 +451,7 @@  enum diff_category
   | STATIC_DATA_MEMBER_CHANGE_CATEGORY
   | HARMLESS_ENUM_CHANGE_CATEGORY
   | HARMLESS_SYMBOL_ALIAS_CHANGE_CATEGORY
-  | HARMLESS_UNION_CHANGE_CATEGORY
+  | HARMLESS_UNION_OR_CLASS_CHANGE_CATEGORY
   | HARMLESS_DATA_MEMBER_CHANGE_CATEGORY
   | SUPPRESSED_CATEGORY
   | PRIVATE_TYPE_CATEGORY
diff --git a/include/abg-fwd.h b/include/abg-fwd.h
index a730b181..fe18740f 100644
--- a/include/abg-fwd.h
+++ b/include/abg-fwd.h
@@ -153,6 +153,10 @@  class decl_base;
 // Convenience typedef for a smart pointer on @ref decl_base.
 typedef shared_ptr<decl_base> decl_base_sptr;
 
+/// Convenience typedef for a map which key is a string and which
+/// value is a @ref decl_base_sptr.
+typedef unordered_map<string, decl_base_sptr> string_decl_base_sptr_map;
+
 class type_decl;
 /// Convenience typedef for a shared pointer on a @ref type_decl.
 typedef shared_ptr<type_decl> type_decl_sptr;
@@ -767,6 +771,12 @@  get_last_data_member(const class_or_union*);
 var_decl_sptr
 get_last_data_member(const class_or_union_sptr&);
 
+bool
+collect_non_anonymous_data_members(const class_or_union* cou, string_decl_base_sptr_map& dms);
+
+bool
+collect_non_anonymous_data_members(const class_or_union_sptr &cou, string_decl_base_sptr_map& dms);
+
 bool
 is_anonymous_data_member(const decl_base&);
 
diff --git a/src/abg-comp-filter.cc b/src/abg-comp-filter.cc
index 63716775..caea9d0c 100644
--- a/src/abg-comp-filter.cc
+++ b/src/abg-comp-filter.cc
@@ -28,6 +28,10 @@  namespace comparison
 namespace filtering
 {
 
+static bool
+has_offset_changes(const string_decl_base_sptr_map& f_data_members,
+		   const string_decl_base_sptr_map& s_data_members);
+
 using std::dynamic_pointer_cast;
 
 /// Walk the diff sub-trees of a a @ref corpus_diff and apply a filter
@@ -158,6 +162,55 @@  type_size_changed(const type_base_sptr f, const type_base_sptr s)
   return f->get_size_in_bits() != s->get_size_in_bits();
 }
 
+/// Detect if a type has offset changes.
+///
+/// The type must be either a class or a union.  This function returns
+/// true iff the type has a data member which has an offset change.
+///
+/// @param f the first version of the type to consider.
+///
+/// @param s the second version of the type to consider.
+///
+/// @return true iff the type has a data member which has an offset
+/// change.
+static bool
+type_has_offset_changes(const type_base_sptr f, const type_base_sptr s)
+{
+  if (!f || !s)
+    return false;
+
+  class_or_union_sptr first = is_class_or_union_type(f);
+  class_or_union_sptr second = is_class_or_union_type(s);
+  if (!first || !second)
+    return false;
+
+  // collect the data members
+  string_decl_base_sptr_map f_data_members, s_data_members;
+  collect_non_anonymous_data_members(first, f_data_members);
+  collect_non_anonymous_data_members(second, s_data_members);
+
+    // detect offset changes
+  if (has_offset_changes(f_data_members, s_data_members))
+    return true;
+
+  return false;
+}
+
+/// Detect if a type has offset changes.
+///
+/// The type must be either a class or a union.  This function returns
+/// true iff the type has a data member which has an offset change.
+///
+/// @param f the first version of the type to consider.
+///
+/// @param s the second version of the type to consider.
+///
+/// @return true iff the type has a data member which has an offset
+/// change.
+static bool
+type_has_offset_changes(const decl_base_sptr f, const decl_base_sptr s)
+{return type_has_offset_changes(is_type(f), is_type(s));}
+
 /// Tests if the size of a given type changed.
 ///
 /// @param f the declaration of the first version of the type to
@@ -193,6 +246,184 @@  has_type_size_change(const diff* diff)
 
   return type_size_changed(f, s);
 }
+
+/// Find a data member that is at a given offset.
+///
+/// @param data_members the set of data member to consider.
+///
+/// @param the offset to consider.
+///
+/// @return the data member found at offset @p offset of nil if none
+/// was found with that offset;
+static var_decl_sptr
+find_data_member_at_offset(const string_decl_base_sptr_map& data_members,
+			   unsigned offset)
+{
+  for (auto e : data_members)
+    {
+      var_decl_sptr dm = is_var_decl(e.second);
+      ABG_ASSERT(dm);
+      unsigned off = get_absolute_data_member_offset(dm);
+      if (offset == off)
+	return dm;
+    }
+  return var_decl_sptr();
+}
+
+/// Test if a set of data members contains at least one data member
+/// that has an offset change.
+///
+/// @param f_data_members the first version of data members to
+/// consider.
+///
+/// @param s_data_members the second version of data members to
+/// consider.
+///
+/// @return true iff there is at least one data member which has an
+/// offset change between the first version of data members and the
+/// second version.
+static bool
+has_offset_changes(const string_decl_base_sptr_map& f_data_members,
+		   const string_decl_base_sptr_map& s_data_members)
+{
+  // Compare the offsets of the data members
+  for (auto entry : f_data_members)
+    {
+      var_decl_sptr f_member = is_var_decl(entry.second);
+      ABG_ASSERT(f_member);
+      unsigned f_offset = get_absolute_data_member_offset(f_member);
+      auto i = s_data_members.find(entry.first);
+      var_decl_sptr s_member;
+      if (i == s_data_members.end())
+	{
+	  s_member = find_data_member_at_offset(s_data_members, f_offset);
+	  if (!s_member)
+	    // A data member was suppressed; that's bad; let's consider
+	    // that as an offset change.
+	    return true;
+	}
+
+      if (!s_member)
+	s_member = is_var_decl(i->second);
+      ABG_ASSERT(s_member);
+      unsigned s_offset = get_absolute_data_member_offset(s_member);
+      if (f_offset != s_offset)
+	return true;
+    }
+  return false;
+}
+
+/// Test if a set of data members contains at least one data member
+/// that has a sub-type change.
+///
+/// @param f_data_members the first version of data members to
+/// consider.
+///
+/// @param s_data_members the second version of data members to
+/// consider.
+///
+/// @return true iff there is at least one data member which has a
+/// sub-type change between the first version of data members and the
+/// second version.
+static bool
+has_subtype_changes(const string_decl_base_sptr_map& f_data_members,
+		    const string_decl_base_sptr_map& s_data_members,
+		    diff_context_sptr ctxt)
+{
+  // Now compare the offsets of the data members collected.
+  var_decl_sptr s_member;
+  for (auto entry : f_data_members)
+    {
+      var_decl_sptr f_member = is_var_decl(entry.second);
+      ABG_ASSERT(f_member);
+
+      auto i = s_data_members.find(entry.first);
+      if (i == s_data_members.end())
+	{
+	  unsigned offset = get_data_member_offset(f_member);
+	  s_member = find_data_member_at_offset(s_data_members, offset);
+	  if (!s_member)
+	    // A data member was suppressed; that's bad; let's consider
+	    // that as a sub-type change.
+	    return true;
+	}
+
+      if (!s_member)
+	s_member = is_var_decl(i->second);
+      ABG_ASSERT(s_member);
+      diff_sptr d =compute_diff(f_member->get_type(), s_member->get_type(), ctxt);
+      if (d->has_changes())
+	return true;
+    }
+  return false;
+}
+
+/// Test if the changes of a @ref class_diff are harmless.
+///
+/// Potentially harmful changes are basically:
+///   1/ name change (that changes the type altogether)
+///   2/ size change
+///   3/ offset change of any data member
+///   4/ any subtype change.
+///
+/// Thus, this function tests that the class_diff carries none of the
+/// 4 kinds of changes above.
+///
+/// @param d the @ref class_diff to consider.
+///
+/// @return true iff @p d has only harmless changes.
+static bool
+class_diff_has_only_harmless_changes(const class_diff* d)
+{
+  if (!d || !d->has_changes())
+    return true;
+
+  class_decl_sptr f = d->first_class_decl(), s = d->second_class_decl();
+
+  if (f->get_qualified_name() != s->get_qualified_name())
+    return false;
+
+  if (f->get_size_in_bits() != s->get_size_in_bits())
+    return false;
+
+  // collect the data members
+  string_decl_base_sptr_map f_data_members, s_data_members;
+  collect_non_anonymous_data_members(f, f_data_members);
+  collect_non_anonymous_data_members(s, s_data_members);
+
+  // detect offset changes
+  if (has_offset_changes(f_data_members, s_data_members))
+    return false;
+
+  // detect subtype changes
+  if (has_subtype_changes(f_data_members, s_data_members, d->context()))
+    return false;
+
+  return true;
+}
+
+/// Test if the changes of a @ref class_diff are harmless.
+///
+/// Potentially harmful changes are basically:
+///   1/ name change (that changes the type altogether)
+///   2/ size change
+///   3/ offset change of any data member
+///   4/ any subtype change.
+///
+/// Thus, this function tests that the class_diff carries none of the
+/// 4 kinds of changes above.
+///
+/// @param d the @ref class_diff to consider.
+///
+/// @return true iff @p d has only harmless changes.
+static bool
+class_diff_has_only_harmless_changes(diff* d)
+{
+  if (const class_diff* class_dif = is_class_diff(d))
+    return class_diff_has_only_harmless_changes(class_dif);
+  return false;
+}
+
 /// Tests if the access specifiers for a member declaration changed.
 ///
 /// @param f the declaration for the first version of the member
@@ -1025,27 +1256,27 @@  static bool
 has_non_virtual_mem_fn_change(const diff* diff)
 {return has_non_virtual_mem_fn_change(dynamic_cast<const class_diff*>(diff));}
 
-/// Test if a class_diff carries base classes adding or removals.
+/// Test if a class_diff carries a base class removal.
 ///
 /// @param diff the class_diff to consider.
 ///
-/// @return true iff @p diff carries base classes adding or removals.
+/// @return true iff @p diff carries a base classe removal.
 static bool
-base_classes_added_or_removed(const class_diff* diff)
+base_classes_removed(const class_diff* diff)
 {
   if (!diff)
     return false;
-  return diff->deleted_bases().size() || diff->inserted_bases().size();
+  return diff->deleted_bases().size();
 }
 
-/// Test if a class_diff carries base classes adding or removals.
+/// Test if a class_diff carries a base classes removal.
 ///
 /// @param diff the class_diff to consider.
 ///
-/// @return true iff @p diff carries base classes adding or removals.
+/// @return true iff @p diff carries a base class removal.
 static bool
-base_classes_added_or_removed(const diff* diff)
-{return base_classes_added_or_removed(dynamic_cast<const class_diff*>(diff));}
+base_classes_removed(const diff* diff)
+{return base_classes_removed(dynamic_cast<const class_diff*>(diff));}
 
 /// Test if two classes that are decl-only (have the decl-only flag
 /// and carry no data members) but are different just by their size.
@@ -1827,8 +2058,9 @@  categorize_harmless_diff_node(diff *d, bool pre)
 	  || class_diff_has_harmless_odr_violation_change(d))
 	category |= HARMLESS_DECL_NAME_CHANGE_CATEGORY;
 
-      if (union_diff_has_harmless_changes(d))
-	category |= HARMLESS_UNION_CHANGE_CATEGORY;
+      if (union_diff_has_harmless_changes(d)
+	  || class_diff_has_only_harmless_changes(d))
+	category |= HARMLESS_UNION_OR_CLASS_CHANGE_CATEGORY;
 
       if (has_non_virtual_mem_fn_change(d))
 	category |= NON_VIRT_MEM_FUN_CHANGE_CATEGORY;
@@ -1907,10 +2139,11 @@  categorize_harmful_diff_node(diff *d, bool pre)
       if (!has_class_decl_only_def_change(d)
 	  && !has_enum_decl_only_def_change(d)
 	  && (type_size_changed(f, s)
+	      || type_has_offset_changes(f, s)
 	      || data_member_offset_changed(f, s)
 	      || non_static_data_member_type_size_changed(f, s)
 	      || non_static_data_member_added_or_removed(d)
-	      || base_classes_added_or_removed(d)
+	      || base_classes_removed(d)
 	      || has_harmful_enum_change(d)
 	      || crc_changed(d)
 	      || namespace_changed(d)))
diff --git a/src/abg-comparison.cc b/src/abg-comparison.cc
index 8f4aa5fc..3dc3d28d 100644
--- a/src/abg-comparison.cc
+++ b/src/abg-comparison.cc
@@ -3144,7 +3144,7 @@  get_default_harmless_categories_bitmap()
 	  | abigail::comparison::STATIC_DATA_MEMBER_CHANGE_CATEGORY
 	  | abigail::comparison::HARMLESS_ENUM_CHANGE_CATEGORY
 	  | abigail::comparison::HARMLESS_SYMBOL_ALIAS_CHANGE_CATEGORY
-	  | abigail::comparison::HARMLESS_UNION_CHANGE_CATEGORY
+	  | abigail::comparison::HARMLESS_UNION_OR_CLASS_CHANGE_CATEGORY
 	  | abigail::comparison::HARMLESS_DATA_MEMBER_CHANGE_CATEGORY
 	  | abigail::comparison::TYPE_DECL_ONLY_DEF_CHANGE_CATEGORY
 	  | abigail::comparison::FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY
@@ -3250,11 +3250,11 @@  operator<<(ostream& o, diff_category c)
       emitted_a_category |= true;
     }
 
-  if (c & HARMLESS_UNION_CHANGE_CATEGORY)
+  if (c & HARMLESS_UNION_OR_CLASS_CHANGE_CATEGORY)
     {
       if (emitted_a_category)
 	o << "|";
-      o << "HARMLESS_UNION_CHANGE_CATEGORY";
+      o << "HARMLESS_UNION_OR_CLASS_CHANGE_CATEGORY";
       emitted_a_category |= true;
     }
 
@@ -5844,6 +5844,46 @@  class_diff::ensure_lookup_tables_populated(void) const
 	      get_priv()->inserted_bases_[name] = b;
 	  }
       }
+
+    // ===============================================================
+    // Detect when a data member is deleted from the class but is now
+    // present in one of the bases at the same offset.  In that case,
+    // the data member should not be considered as removed.
+    // ===============================================================
+    string_decl_base_sptr_map& deleted_data_members =
+      class_or_union_diff::priv_->deleted_data_members_;
+
+    vector<var_decl_sptr> deleted_data_members_present_in_bases;
+    for (auto entry : deleted_data_members)
+      {
+	var_decl_sptr deleted_member = is_var_decl(entry.second);
+	ABG_ASSERT(deleted_member);
+	for (class_decl::base_spec_sptr base : second_class_decl()->get_base_specifiers())
+	  {
+	    class_decl_sptr klass = base->get_base_class();
+	    var_decl_sptr member = klass->find_data_member(deleted_member->get_name());
+	    if (member)
+	      deleted_data_members_present_in_bases.push_back(member);
+	  }
+      }
+    // Walk the deleted data members that are now in one of the bases,
+    // of the new type, at the same offset, and let's see if they have
+    // sub-type changes.  In any cases, these should not be considered
+    // as being deleted.
+    for (var_decl_sptr m : deleted_data_members_present_in_bases)
+      {
+	string name = m->get_name();
+	auto it = deleted_data_members.find(name);
+	ABG_ASSERT(it != deleted_data_members.end());
+	var_decl_sptr deleted_member = is_var_decl(it->second);
+	if (*deleted_member != *m)
+	  {
+	    var_diff_sptr dif = compute_diff(deleted_member, m, context());
+	    ABG_ASSERT(dif);
+	    class_or_union_diff::priv_->subtype_changed_dm_[name]= dif;
+	  }
+	deleted_data_members.erase(name);
+      }
   }
 
   sort_string_base_sptr_map(get_priv()->deleted_bases_,
diff --git a/src/abg-default-reporter.cc b/src/abg-default-reporter.cc
index 426b27b4..3721d383 100644
--- a/src/abg-default-reporter.cc
+++ b/src/abg-default-reporter.cc
@@ -1534,7 +1534,7 @@  default_reporter::report(const union_diff& d, ostream& out,
 
   d.class_or_union_diff::report(out, indent);
 
-  if (d.context()->get_allowed_category() & HARMLESS_UNION_CHANGE_CATEGORY
+  if (d.context()->get_allowed_category() & HARMLESS_UNION_OR_CLASS_CHANGE_CATEGORY
       && filtering::union_diff_has_harmless_changes(&d))
     {
       // The user wants to see harmless changes and the union diff we
diff --git a/src/abg-ir.cc b/src/abg-ir.cc
index 0c4e8aa6..f91d67a2 100644
--- a/src/abg-ir.cc
+++ b/src/abg-ir.cc
@@ -6036,6 +6036,74 @@  var_decl_sptr
 get_last_data_member(const class_or_union_sptr &klass)
 {return get_last_data_member(klass.get());}
 
+/// Collect all the non-anonymous data members of a class or union type.
+///
+/// If the class contains any anonymous data member, this function
+/// looks through it to collect the non-anonymous data members that it
+/// contains.  The function also also looks through the base classes
+/// of the current type.
+///
+/// @param cou the class or union type to consider.
+///
+/// @param dms output parameter.  This is populated by the function
+/// with a map containing the non-anonymous data members that were
+/// collected.  The key of the map is the name of the data member.
+/// This is set iff the function returns true.
+///
+/// @return true iff at least one non-anonymous data member was
+/// collected.
+bool
+collect_non_anonymous_data_members(const class_or_union* cou,
+				   string_decl_base_sptr_map& dms)
+{
+  if (!cou)
+    return false;
+
+  bool result = false;
+  class_decl* klass = is_class_type(cou);
+  if (klass)
+    // First look into base classes for data members.
+    for (class_decl::base_spec_sptr base : klass->get_base_specifiers())
+      result |= collect_non_anonymous_data_members(base->get_base_class().get(), dms);
+
+  // Then look into our data members
+  for (var_decl_sptr member : cou->get_non_static_data_members())
+    {
+      if (is_anonymous_data_member(member))
+	{
+	  class_or_union_sptr cl = anonymous_data_member_to_class_or_union(member);
+	  ABG_ASSERT(cl);
+	  result |= collect_non_anonymous_data_members(cl.get(), dms);
+	}
+      else
+	{
+	  dms[member->get_name()] = member;
+	  result = true;
+	}
+    }
+  return true;
+}
+
+/// Collect all the non-anonymous data members of a class or union type.
+///
+/// If the class contains any anonymous data member, this function
+/// looks through it to collect the non-anonymous data members that it
+/// contains.  The function also also looks through the base classes
+/// of the current type.
+///
+/// @param cou the class or union type to consider.
+///
+/// @param dms output parameter.  This is populated by the function
+/// with a map containing the non-anonymous data members that were
+/// collected.  The key of the map is the name of the data member.
+/// This is set iff the function returns true.
+///
+/// @return true iff at least one non-anonymous data member was
+/// collected.
+bool
+collect_non_anonymous_data_members(const class_or_union_sptr &cou, string_decl_base_sptr_map& dms)
+{return collect_non_anonymous_data_members(cou.get(), dms);}
+
 /// Test if a decl is an anonymous data member.
 ///
 /// @param d the decl to consider.
diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am
index b5a9335f..5be64c4c 100644
--- a/tests/data/Makefile.am
+++ b/tests/data/Makefile.am
@@ -419,6 +419,32 @@  test-abidiff-exit/PR31377/flex/lib64/librte_pipeline.so.24.1 \
 test-abidiff-exit/PR31377/reference/include/rte_pipeline.h \
 test-abidiff-exit/PR31377/reference/lib64/librte_pipeline.so.24.0 \
 test-abidiff-exit/PR31377/test-PR31377-report-1.txt \
+test-abidiff-exit/PR31513/reported/PR31513-reported-report-1.txt \
+test-abidiff-exit/PR31513/reported/PR31513-reported-report-2.txt \
+test-abidiff-exit/PR31513/reported/libloremipsum_gcc11.so \
+test-abidiff-exit/PR31513/reported/libloremipsum_gcc7.so \
+test-abidiff-exit/PR31513/reported/libstdcpp.suppr \
+test-abidiff-exit/PR31513/non-regr/libtest1-v0.so  \
+test-abidiff-exit/PR31513/non-regr/libtest1-v1.so  \
+test-abidiff-exit/PR31513/non-regr/libtest2-v0.so  \
+test-abidiff-exit/PR31513/non-regr/libtest2-v1.so  \
+test-abidiff-exit/PR31513/non-regr/libtest3-v0.so  \
+test-abidiff-exit/PR31513/non-regr/libtest3-v1.so  \
+test-abidiff-exit/PR31513/non-regr/libtest4-v0.so  \
+test-abidiff-exit/PR31513/non-regr/libtest4-v1.so  \
+test-abidiff-exit/PR31513/non-regr/report1.txt  \
+test-abidiff-exit/PR31513/non-regr/report2.txt  \
+test-abidiff-exit/PR31513/non-regr/report3.txt  \
+test-abidiff-exit/PR31513/non-regr/report4.txt  \
+test-abidiff-exit/PR31513/non-regr/test1-v0.cc  \
+test-abidiff-exit/PR31513/non-regr/test1-v1.cc  \
+test-abidiff-exit/PR31513/non-regr/test2-v0.cc  \
+test-abidiff-exit/PR31513/non-regr/test2-v1.cc  \
+test-abidiff-exit/PR31513/non-regr/test3-v0.cc  \
+test-abidiff-exit/PR31513/non-regr/test3-v1.cc  \
+test-abidiff-exit/PR31513/non-regr/test4-v0.cc  \
+test-abidiff-exit/PR31513/non-regr/test4-v1.cc  \
+\
 test-diff-dwarf/test0-v0.cc		\
 test-diff-dwarf/test0-v0.o			\
 test-diff-dwarf/test0-v1.cc		\
diff --git a/tests/data/test-abidiff-exit/PR31513/non-regr/libtest1-v0.so b/tests/data/test-abidiff-exit/PR31513/non-regr/libtest1-v0.so
new file mode 100755
index 0000000000000000000000000000000000000000..e4ba91f64b3d274a162b12f700c280dcffc767db
GIT binary patch
literal 16768
zcmeHOZ){W76~E7piNTPBrs?>zE)NzYDD{h-01co(LP&5rLemg57^_~N?HAjd?Uz2k
zKti>RiLNR`or+d<AKIx>zYJ-ev@e^cewczfRczWO_6<#%l&R`OrD>&_R>3OaopbLw
zj`M04#D{5<-i`du-`_d+op+z#eeu2D89h1{(lo&>EDnfeNr)jf>}3XZ10n{;tzwJx
zZCN&bhD$}1imB*OGUkvbl3CC6QR)O!)}vbH(^VYdqc4z}X+3Tg*cRi;VR3LJO@)*^
zNtAIYBJKv^ZV-;?E$S!Js0t(di2b}m@%%JFeoXzi8-(-I9>Ouj9N3P3;AI~q-z4Gu
zb!7RAD!gFI`JM(G*5!U1U*;*w*X%kB(Rnka^2&PZkPOGnkz*%d+-Zy07q*8;29<1R
zdl)`p_@ICCtvhf2HTQ#8%csBo_UYWk$*x`R_oE}G!<ZOHoljH;RyNfCCHs7m#D-)H
zv|Afk@O<?Kdd$;E|9BJq3D7?z)`~k+z%GzwGtFGdDVr6~ay`=&=J@o4nYCRzSEzWl
zJ3TQ{bjtR$l`h)K*4ScZ<}GukP_~MNbKv;3{u#%a+T|_G+M-xUSG;Uy=T4*I7<*7G
z)wo<HV^&Z~qCTVaM~;pk8ZrBfK4Ulb5UvRQp@jTJpga!dHWgN*&kxZEjqgXk4{nj;
zHM-we|8vq`_vu-_c2LE`Yl*eycD+tdLrj`()ah}oa9gU=^O%>mA?48uq&~jV2FIWR
zK?Q;e1QiG>5L6(jKv0380{`0;_-Ff<{++t;_h{-;<hQ*-q`tT4g{s$67k(3cS9ZL*
z`*)zOZu>nP+q;K=LphJO50|RdYU<^|tB89!@(z-{x4kY1bq09|wYs|0-hCdO-z5tE
zm!<#i?<3i9H+At=>gqoZrmo%&r?mG{f4b{E3;{+dK(x9v)82h}8IS!vKR5wqF}L$X
z>cU_M+0?}kytNSeF1$wFJO$mlnT5l9k!@hqo`Kx8{D}YXEErD!CUx;!w^Nr!Z@2$)
zsHOeai_gF**XmKL0QNp;K?Q;e1QiG>5L6(jKv0380zn0W3Ir7hDiBoQ|GNU(=J0;}
zZ5MwN({EL)13>QpeHJJ-{0$YGc5X^&^BvmewXM-t;D@gs&>?Q=qiR(LD%v{6+BQ7d
z9y=R7FAi?n|5$&I{8<!z;PqWxhM4lV%i*?;7egcKR!u@6#04#=Kv0380zn0W3Ir7h
zDiBm4s6bGGpaMY!?yCa4PSU?FlGi4tDGJNa`Q+z)GOp3YwpNkag3Wa#cdS>;Mv{5m
z=4O)loo*A!ynYkk1F^CFUw5mHRM4VJxfUE0zap8}7H=ncjdT{`O`<WP8;FvdxJm0a
zd5tIA`8^ibZDRX^A|gSFS^p9(_T+wEAwO8GDjUbUTUGtflRx~TEYFAQ46nOVK1udF
zBy&G0+<%SmdUb!oJ+z+o$jHb(eLJj_-k~RV83`k)_a*vvCHndX^zBo2R!><T8RCf@
z5CrQZp>V=ShI_PrD=CI37Sl#Pya4zS@@?e9V{8MBwMIUigV#kj@@XSH(+Bn8zHa`U
zK676mrJT5)Ta7`?3jb3fY;FCv)Gi->1Z+fT(ploRpbhWBM#%6i7@}G@It5fKB}AkZ
zIbf4wRrC~aEuy6*QYd>OqOF<(c@-?|7TOvu4?Md1qiS!w3ffi=d}7FjF6TuwY5*s+
zbs`+yw?*3@+Z!A29DqA7v|iiR))@<TZ|+{NJ=EF(H&eJ%3%A8$`(o&&bwUSvL@ah7
z7KSs55ZeabFtmdkA)0h6w~coqerUtFjR<LtU?OQ6?+n467VUr-<6sdJ@QJ{ndkp)d
zX`i;OLxMLOe1PfJuv8(fJJim1J|Z-+I>cuhUZX|UUWjNv3&F~C4Mw^?vU6whiTfDt
zdc5S#mF>ZtUAEmq21Luv<Ok;m_Qdz>(&ITjKI6>H6dfxYcV@kUQ?3lgizeJrW@+V;
z`b^$(g=bg1Wc*CR$Yexs-YMC=Stt9ALT|3%^}=F$D_zK0g<|haVcxFv&bsJc>7AVF
zPwr0k_rfZE*RE6`M_d}<BpWv@O^f)r>bK(ecnHQ7-#=_`C;cpqQ`T=KJwIPqKLCs-
z9ud(YrNMmI@PB=pSTFc{Un=47P55A5eqOQuEHD~;De!ZI^{)ZbsQ+&@(Z4O@w2SjP
zFuv9(&O6cvMx?&d`41p!u;YUF6R`Eqz=Xs)!QV}+Uy^!wI{E7MH_&UMQ~1AkKa%>c
zTHQdD?Nc~vqO11&BDGi#g~e;&Z;yjs_bWk8HPL^yiT*jzH{4&6alJHbCMh2`9I?Ew
z#PmvL26vWJglT3SGgoxdR?*CQj$1LUxp|RsO0z}Vv$IB`u?OxpDVUb)S_`IK_S^+A
z<60%#%+8fc3jnE;Oz`wpxYpl0&_TPL#qOEr*wpaEs5yG<Fz$pg;ode!Q>08Cp2Ch)
z95Zi~v$z`uJ0N6iVIDqpY<OaP1Uz8J3<o%J^r=I`N6n|k#*U9po72OGj*ep3`mHiU
z^_yKjckfMuZ90v&;?(cG5k_U9<XLH;o~vk{xw7NgMy@<(%(~93?RpEssHxI(g<>{d
z$O`F@w<>vIWEaX1Oi|BOmNT}C-ytgm6Kt+sv=BhtY|#@2UIbxy_B<SA=?pthS1F$b
z3`@#WT`uLxeAe<T3~jiM?1oh;WFWNz0pVcCEa^%`7%+HBFeX&D<hdA@=edRS99(#S
z+UdC*1hvY!WwB76!KliVPP_IQmWqY4%{&y3SyaQeDYwDR^8hNG_u|}<pE}L<`Eh79
z8(>KYe8Se_o9*{w1WhMd6vM!M0&`2wFE_lQl_r`!<jFXH{;z-?=hBSl`8Ly62+w=u
z7|-+I<6y^BjOY0~Q=YF=82FA`*-nFqb7#i$e3>ae*0FK_*^g-+Y&aLM$>hlMavj0Y
z{QXy2A@KQw5XSTTpXn8H<oy2g|1RMVksrTLFy%TS9_N03{3Xy~P56DM_8g(-3BOl?
zi)`EvmR|&>9<LLwM%j@lKc<*o_Th)f!1Rwz@T|spYkhuxJ~HL^M)vpj|Hp*q`U{;r
ziSm0RX=~$v<(~qB`5CY4%EC0O#M+VT&x&6F1G50WU25|X-k<9CXPN0$z~bDA-|KkZ
zb1e=^XzZt?WtsJAzOjtwdB^p8;5i=7OK|LPex7geer4X5%<tEnm#_c(fW`VTp7&2)
z>jfn=T^^SYjAwciO!atv|Gs&j_>TdPu{b}^C!-0Klk+G^<zgP`C-A}i<c=!Y7?0nt
z^$mToF~tcozx$)U<5@fkF+c%zc2w%mjK40h`&^{w$)p1K`{noTX@Y-=@UK%|CVqUP
z3I5A{3h@F1iTd#en&5vz_^0oIf0FS2^Sn*?b4~Evj}uMsZodK^y9XZQ@V#H}x=8qw
vWYock{{!Oj#NW&Ke;posz}DJ^J&OG{ca$tX5#Dqf<6nD10c;<@CyM_7ZQ=8O

literal 0
HcmV?d00001

diff --git a/tests/data/test-abidiff-exit/PR31513/non-regr/libtest1-v1.so b/tests/data/test-abidiff-exit/PR31513/non-regr/libtest1-v1.so
diff --git a/tests/data/test-abidiff-exit/PR31513/non-regr/libtest2-v0.so b/tests/data/test-abidiff-exit/PR31513/non-regr/libtest2-v0.so
new file mode 100755
index 0000000000000000000000000000000000000000..eec1b9bd55b9b5144fe2040dc9dc2a8e8e7f9d4a
GIT binary patch
literal 16768
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

literal 0
HcmV?d00001

diff --git a/tests/data/test-abidiff-exit/PR31513/non-regr/libtest2-v1.so b/tests/data/test-abidiff-exit/PR31513/non-regr/libtest2-v1.so
diff --git a/tests/data/test-abidiff-exit/PR31513/non-regr/libtest3-v0.so b/tests/data/test-abidiff-exit/PR31513/non-regr/libtest3-v0.so
new file mode 100755
index 0000000000000000000000000000000000000000..2a0f5d630d125dd271c8086a7ed7bcf0d57aa2e8
GIT binary patch
literal 16768
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

literal 0
HcmV?d00001

diff --git a/tests/data/test-abidiff-exit/PR31513/non-regr/libtest3-v1.so b/tests/data/test-abidiff-exit/PR31513/non-regr/libtest3-v1.so
diff --git a/tests/data/test-abidiff-exit/PR31513/non-regr/libtest4-v0.so b/tests/data/test-abidiff-exit/PR31513/non-regr/libtest4-v0.so
new file mode 100755
index 0000000000000000000000000000000000000000..5eed25fc01f4da9d3fa0865b23cf5b26e6ea9319
GIT binary patch
literal 16768
zcmeHOYit}>6~43UwKrMEkGd&&P&^5alr-J(uAQV#A}4;t&bq{D>Np|+Rnys>@$Q!0
z9d~w|*r|Y2DWz#tsS&9B;3e^gNPq-FAk-hoQBf68slvYq3CU7bND<Ifh{~aomvio%
zvtCbkn<zgJNOP^7^Zd@abLP&@9q+wg9XmE2QWU{0EDniPNr)jf>}Ljb10n{;?P8ns
zZCW*bj7vp46;sjS$(Tc$NM=3Lhp7`xS&wR&PxaymAANz;Olxt?U|WoP4vT|pX)5H&
zCx|i*Ma11C+)ctUy-odO8uh}+K4L$wQanFRkRMY&?k3^<w1;p^F$cDj@4Dvw<U2t)
ze;rx=v=?45<$O;94(oESjW6>Q<!f{uhUmPRQh8-PRY-<o=IHTLFz%E^><imNB!fye
zv^@x)FnrMet>oK-&wTyN&!7L^-~Xz;bMr6ppS?VQj+hQ(VjS;$qAIYmq5e<ib4e2G
zl5x;(uVcaURqN<6Pd)vk4fLl#|A1%}cc_3HL6%L|vqih4mtDhgbzSHa)04VsIaW4b
zb}eUma<pKVtZ5@%usmCRi=LS`^qG9gDCEzB;}`m8Y<p^tyD)2sLOxw~&CKrITG`h2
zp;)YP*-S<+qm)E_#?v1?HZd})_i26FUhE-U5&A<3`Aa}~9L#OWuS1`2pb;A1k9;58
zCdcb^zp?(Oq`%?QvwZ!q7Z0x`)|%Um8a)j$X}VdX$Fag~sYcIZUfPB{j}{=c@jY#D
z3@Q**AgDl4fuI6G1%e6$6$mQuzg>ZUwtwc|sf&M$rY=W*+bcxsYm08EawB!|H_<m_
z$18h(2kOd>x8T^`Jp>%eIkdgERH;-_uMA#8+$)jSk?db~H$teh$U~@gm8JIX3+Vg?
zQSiSa{rA3%WY<dS((Tl>e;iI-TMnm`H&cIDaUX;LV-z4-S(<6@KC+6({$3cI1hbgi
zeJXWvFobOC(z|XegkFKys9R^CTenO&ycyX6M&&8UUCod9_s)Uw6kt-9zPy~eJht5a
z%b}+BUoSodr(CT^wF21tpam5ODiBm4s6bGGpaMY!f(ir`2r3X%AgDl4f&cFcC|kn^
z@wZ+4O-#LAso;;IcYr<(6dV4AicL8`C6xINWov6o^i}xbs|R$5TYA4zQGtrKj`6ll
zkGIFpMK6fMTMj<b-y?q(MIU&57gr#r{OxkMt>eYe=!WJK5D0NW3n~y)AgDl4fuI6G
z1%e6$6$mO2R3NB8P=R}@0I!quuZ!fhiD`<$^0PkqIiHMcG_kdMq`F{p1IZno9<!Nb
zUbnfGWPYdHLNc%4#P>jKZ2#9v#g+<MbSc+@gW^{t^V;H_B(ImwLVTZSjOZq!<R)&>
zx=mi=$##B^#dVw5KIIXSpv0_yi57cuKd+J>ELN3`<E>P@{^!Uaeo>a^!*zz&T`8X?
z`yG<GpA_!DMtHrtKjA)FPkVH9^nkh(R!Z+ulY6v;mQ?!^eR~ppeFN&wDa%w-hD(Nc
zViyF#`ba38@X_HOrQb-3A&SMco)0eoeu#YQ`S2LqL}RU<59i=@(e-@V2+#C>eYme%
zKcUau*M})5uIKi~AZCUCsSvihep_l+58nbdA{6N?aoa}7SPvPV1!GhRN2h=)#e|5o
zAO~zxG)K<>*Cd*nBKeXlB1-cd$jz{@TPW+59PsGskE(p<o1krR!6$}X=t@pRqZ)8R
z*&xEv1KX5?vHh`$t^v67LY>Nvwys#Xduw;6@<2-m+)UvvCEON^9f+Zq(ghvp5wX~z
zSQySILTnp!LsJfKhG^2Q)HczD_@PbbHzTAaf{CPQqALV<TC@XVOn^m9!Y2ZQ?h)*d
zqI}f00SVr0@ByY<-ghCTJJcSMg_DPfBG!fYOvCGyNbALj@{<s(Ojlr}tE0PjCm*|q
z;jYGu?p(<l%vvSO$!9<`oJ?+TeqdjG-ySudRpT@E%uK;H%(y-4=Iv5>FkaB%j?#;3
zm(*u+h9i1&cG2oJZS$FYZ#M7t!UB3DozEKiLhnp|-YWObI<8fA%e^P2`jdN;{k^bq
z-?7SNh#Qv%fyX`Zvk5JefdbTTSdS+0LB(&y@9_|PyYv0S_IA?G(l}-PcGC0nh4ll#
zDB>Xz9r84?{=nk@`V`SA_<P^83h^aiFfTu^Sbt9XcU0H^v;H+;>h=Ez4fH>jaoWWN
z6&PQu7w2{910zyh>->8V71(jX`w7_kM_@u?gW&Hb)-OptJe_=X`!nbj(Ix!fyYEZ=
z#%kR_l<gxpDq>^x`9*5c35CUL;BSwDUiB+MPBqYfzJdN((AV8xl5yNLY$hq4)NHZ3
zuS9o?dIoovl!dOFww^86X``T<uI-d{V{Tq#?BZ;}axGI!)c3&MCVAa(9AiPZO0KgY
zW*nnv>E>LqxB!qENe54Njce`5hYngL6T7GD<5R<vWBS<fBe)YrhkIKeOOY~lWC}Y{
zw)LD*GI2Kyc0kD3LO*im`0(V!D0sk*84hst*b^he$Mh%0$4`z;>(j#{$Hp*h?N*tg
z+RZMXxc8>cHl6xgaccM82(7$Obd5An*YRkMxsvT#TDCN&%{un1<+uw%tE$p-`GOhG
zn?gF|jB-wB=0XXAdDL}0%UR38?~^rx4mQUs7ziM4w%`g4FM`lqYaWiWbeff;tCTYV
z!;<IeT`td)dDCzW46Qk~?1oXyXCSo=0pXy@Ea`GtXfSw+Febci$#c;R*LCvgIk@lu
zwbFB02x^qFt75)1gHb(GI_+3zSt{g97V}U%W>F2>rkpxA&wZ$H-ivd`5Mdkb^W)Io
zY=9*p@CjRsZ?xZ!5j34-Q49n3A<Qi~zufSKR+?z`kSF8(`9BACoJ%vF=i5wQB|Ptu
zV?57;Pl6p&F`nn|OnJUeVc<J%ZTljKICo||&zG6<dkFWR{g~zek8|;=OpZJ+S1Fyp
z|D+c9{6PrgdH&DzDmij~|M@>p_!08s_X(z4C&c62&yT+hI;;u5?^K^7^gQABDsYjF
z`@!;yz|`VZ!c{3d66MDf(<?sw5E+=h-2l&OoVV8I=jS6+es5%dfB(Nrc&@)t$&)C*
zH<DIfE9Q~@2tJsf@u~^}G^VB}R*zhNR{R1Om<90dQk{qJ{#3s|%S^8U7Uxd<UdQvE
z>v2#*V?R$?m09o2H&*dH@3?UnJjcU%3634k&+`r5ugv?B`Td&n^7VfQuvkCF^Zv=}
zy`Y4q%H!&R@l0=lsTR-g-?#1&{{i4J7U$>rWHjOB<UF3_<zgP`hw#Dt<c=!Y7?0nt
zwGDl-F~tcozx$)U<7qq!F+c%TcJ$OA8-E+Y?sJizr;{GQ-!H#!PXqi*g#R|>W#Y#t
z8sI<M=OJETAW=X5Py_rA3IF6>@Q)MTf1b;PKi>e){W#SC@AP}X<9ESh9KQE!T^9*|
wnv5zK@qa)(p7?ti|F6Si57=tkw9jL|!W|`xPlPv}`uNu#^8l6);1k7v06(Dh{r~^~

literal 0
HcmV?d00001

diff --git a/tests/data/test-abidiff-exit/PR31513/non-regr/libtest4-v1.so b/tests/data/test-abidiff-exit/PR31513/non-regr/libtest4-v1.so
diff --git a/tests/data/test-abidiff-exit/PR31513/non-regr/report1.txt b/tests/data/test-abidiff-exit/PR31513/non-regr/report1.txt
new file mode 100644
index 00000000..dff216f8
--- /dev/null
+++ b/tests/data/test-abidiff-exit/PR31513/non-regr/report1.txt
@@ -0,0 +1,12 @@ 
+Functions changes summary: 0 Removed, 1 Changed, 0 Added function
+Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
+
+1 function with some indirect sub-type change:
+
+  [C] 'function int foo(type&)' at test1-v0.cc:10:1 has some indirect sub-type changes:
+    parameter 1 of type 'type&' has sub-type changes:
+      in referenced type 'struct type' at test1-v1.cc:8:1:
+        type size hasn't changed
+        1 base class insertion:
+          struct base at test1-v1.cc:2:1
+
diff --git a/tests/data/test-abidiff-exit/PR31513/non-regr/report2.txt b/tests/data/test-abidiff-exit/PR31513/non-regr/report2.txt
new file mode 100644
index 00000000..25d39e9b
--- /dev/null
+++ b/tests/data/test-abidiff-exit/PR31513/non-regr/report2.txt
@@ -0,0 +1,12 @@ 
+Functions changes summary: 0 Removed, 1 Changed, 0 Added function
+Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
+
+1 function with some indirect sub-type change:
+
+  [C] 'function int foo(type&)' at test2-v0.cc:10:1 has some indirect sub-type changes:
+    parameter 1 of type 'type&' has sub-type changes:
+      in referenced type 'struct type' at test2-v1.cc:9:1:
+        type size hasn't changed
+        1 base class insertion:
+          struct base at test2-v1.cc:2:1
+
diff --git a/tests/data/test-abidiff-exit/PR31513/non-regr/report3.txt b/tests/data/test-abidiff-exit/PR31513/non-regr/report3.txt
new file mode 100644
index 00000000..5883066e
--- /dev/null
+++ b/tests/data/test-abidiff-exit/PR31513/non-regr/report3.txt
@@ -0,0 +1,12 @@ 
+Functions changes summary: 0 Removed, 1 Changed, 0 Added function
+Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
+
+1 function with some indirect sub-type change:
+
+  [C] 'function int foo(type&)' at test3-v0.cc:10:1 has some indirect sub-type changes:
+    parameter 1 of type 'type&' has sub-type changes:
+      in referenced type 'struct type' at test3-v1.cc:9:1:
+        type size changed from 64 to 96 (in bits)
+        1 base class insertion:
+          struct base at test3-v1.cc:2:1
+
diff --git a/tests/data/test-abidiff-exit/PR31513/non-regr/report4.txt b/tests/data/test-abidiff-exit/PR31513/non-regr/report4.txt
new file mode 100644
index 00000000..9a78f7b7
--- /dev/null
+++ b/tests/data/test-abidiff-exit/PR31513/non-regr/report4.txt
@@ -0,0 +1,16 @@ 
+Functions changes summary: 0 Removed, 1 Changed, 0 Added function
+Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
+
+1 function with some indirect sub-type change:
+
+  [C] 'function int foo(type&)' at test4-v0.cc:10:1 has some indirect sub-type changes:
+    parameter 1 of type 'type&' has sub-type changes:
+      in referenced type 'struct type' at test4-v1.cc:8:1:
+        type size changed from 64 to 96 (in bits)
+        1 base class insertion:
+          struct base at test4-v1.cc:2:1
+        1 data member deletion:
+          'char m1', at offset 32 (in bits) at test4-v0.cc:6:1
+        1 data member insertion:
+          'char m3', at offset 64 (in bits) at test4-v1.cc:10:1
+
diff --git a/tests/data/test-abidiff-exit/PR31513/non-regr/test1-v0.cc b/tests/data/test-abidiff-exit/PR31513/non-regr/test1-v0.cc
new file mode 100644
index 00000000..d9f72e95
--- /dev/null
+++ b/tests/data/test-abidiff-exit/PR31513/non-regr/test1-v0.cc
@@ -0,0 +1,13 @@ 
+// g++ -shared -g -o libtest1-v0.so test1-v0.cc
+
+struct type
+{
+  int m0;
+  char m1;
+};
+
+int
+foo(type& t)
+{
+  return t.m1;
+}
diff --git a/tests/data/test-abidiff-exit/PR31513/non-regr/test1-v1.cc b/tests/data/test-abidiff-exit/PR31513/non-regr/test1-v1.cc
new file mode 100644
index 00000000..dc015335
--- /dev/null
+++ b/tests/data/test-abidiff-exit/PR31513/non-regr/test1-v1.cc
@@ -0,0 +1,16 @@ 
+// g++ -shared -g -o libtest1-v1.so test1-v1.cc
+struct base
+{
+  int m0;
+  char m1;
+};
+
+struct type : public base
+{
+};
+
+int
+foo(type& t)
+{
+  return t.m1;
+}
diff --git a/tests/data/test-abidiff-exit/PR31513/non-regr/test2-v0.cc b/tests/data/test-abidiff-exit/PR31513/non-regr/test2-v0.cc
new file mode 100644
index 00000000..fd03cfb3
--- /dev/null
+++ b/tests/data/test-abidiff-exit/PR31513/non-regr/test2-v0.cc
@@ -0,0 +1,13 @@ 
+// g++ -shared -g -o libtest2-v0.so test2-v0.cc
+
+struct type
+{
+  int m0;
+  char m1;
+};
+
+int
+foo(type& t)
+{
+  return t.m1;
+}
diff --git a/tests/data/test-abidiff-exit/PR31513/non-regr/test2-v1.cc b/tests/data/test-abidiff-exit/PR31513/non-regr/test2-v1.cc
new file mode 100644
index 00000000..4b72f89f
--- /dev/null
+++ b/tests/data/test-abidiff-exit/PR31513/non-regr/test2-v1.cc
@@ -0,0 +1,17 @@ 
+// g++ -shared -g -o libtest2-v1.so test2-v1.cc
+struct base
+{
+  int m0;
+  char m1;
+  char m2;
+};
+
+struct type : public base
+{
+};
+
+int
+foo(type& t)
+{
+  return t.m1;
+}
diff --git a/tests/data/test-abidiff-exit/PR31513/non-regr/test3-v0.cc b/tests/data/test-abidiff-exit/PR31513/non-regr/test3-v0.cc
new file mode 100644
index 00000000..47806cc4
--- /dev/null
+++ b/tests/data/test-abidiff-exit/PR31513/non-regr/test3-v0.cc
@@ -0,0 +1,13 @@ 
+// g++ -shared -g -o libtest3-v0.so test3-v0.cc
+
+struct type
+{
+  int m0;
+  char m1;
+};
+
+int
+foo(type& t)
+{
+  return t.m1;
+}
diff --git a/tests/data/test-abidiff-exit/PR31513/non-regr/test3-v1.cc b/tests/data/test-abidiff-exit/PR31513/non-regr/test3-v1.cc
new file mode 100644
index 00000000..0be4717a
--- /dev/null
+++ b/tests/data/test-abidiff-exit/PR31513/non-regr/test3-v1.cc
@@ -0,0 +1,17 @@ 
+// g++ -shared -g -o libtest3-v1.so test3-v1.cc
+struct base
+{
+  int m0;
+  char m1;
+  float m2;
+};
+
+struct type : public base
+{
+};
+
+int
+foo(type& t)
+{
+  return t.m1;
+}
diff --git a/tests/data/test-abidiff-exit/PR31513/non-regr/test4-v0.cc b/tests/data/test-abidiff-exit/PR31513/non-regr/test4-v0.cc
new file mode 100644
index 00000000..47d44d7d
--- /dev/null
+++ b/tests/data/test-abidiff-exit/PR31513/non-regr/test4-v0.cc
@@ -0,0 +1,13 @@ 
+// g++ -shared -g -o libtest4-v0.so test4-v0.cc
+
+struct type
+{
+  int m0;
+  char m1;
+};
+
+int
+foo(type& t)
+{
+  return t.m1;
+}
diff --git a/tests/data/test-abidiff-exit/PR31513/non-regr/test4-v1.cc b/tests/data/test-abidiff-exit/PR31513/non-regr/test4-v1.cc
new file mode 100644
index 00000000..71d2b8c3
--- /dev/null
+++ b/tests/data/test-abidiff-exit/PR31513/non-regr/test4-v1.cc
@@ -0,0 +1,17 @@ 
+// g++ -shared -g -o libtest4-v1.so test4-v1.cc
+struct base
+{
+  int m0;
+  float m2;
+};
+
+struct type : public base
+{
+  char m3;
+};
+
+int
+foo(type& t)
+{
+  return t.m0;
+}
diff --git a/tests/data/test-abidiff-exit/PR31513/reported/PR31513-reported-report-1.txt b/tests/data/test-abidiff-exit/PR31513/reported/PR31513-reported-report-1.txt
new file mode 100644
index 00000000..f86917bb
--- /dev/null
+++ b/tests/data/test-abidiff-exit/PR31513/reported/PR31513-reported-report-1.txt
@@ -0,0 +1,58 @@ 
+Functions changes summary: 16 Removed, 0 Changed (20 filtered out), 21 Added functions
+Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
+Function symbols changes summary: 2 Removed, 2 Added function symbols not referenced by debug info
+Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info
+
+16 Removed functions:
+
+  [D] 'method void __gnu_cxx::new_allocator<char>::destroy<char>(char*)'    {_ZN9__gnu_cxx13new_allocatorIcE7destroyIcEEvPT_}
+  [D] 'method char* std::__copy_move<true, true, std::random_access_iterator_tag>::__copy_m<char>(const char*, char*)'    {_ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mIcEEPT_PKS3_S6_S4_}
+  [D] 'function char* std::__copy_move_a2<true, char*, char*>(char*, char*, char*)'    {_ZSt14__copy_move_a2ILb1EPcS0_ET1_T0_S2_S1_}
+  [D] 'function char* std::__copy_move_a<true, char*, char*>(char*, char*, char*)'    {_ZSt13__copy_move_aILb1EPcS0_ET1_T0_S2_S1_}
+  [D] 'function std::move_iterator<char*> std::__make_move_if_noexcept_iterator<char>(char*)'    {_ZSt32__make_move_if_noexcept_iteratorIcSt13move_iteratorIPcEET0_PT_}
+  [D] 'function char* std::__miter_base<char*>(char*)'    {_ZSt12__miter_baseIPcET_S1_}
+  [D] 'function char* std::__miter_base<char*>(std::move_iterator<char*>)'    {_ZSt12__miter_baseIPcEDTcl12__miter_basecldtfp_4baseEEESt13move_iteratorIT_E}
+  [D] 'method char* std::__uninitialized_copy<true>::__uninit_copy<std::move_iterator<char*>, char*>(std::move_iterator<char*>, char*)'    {_ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIPcES3_EET0_T_S6_S5_}
+  [D] 'function char* std::__uninitialized_copy_a<std::move_iterator<char*>, char*, char>(std::move_iterator<char*>, std::move_iterator<char*>, char*, std::allocator<char>&)'    {_ZSt22__uninitialized_copy_aISt13move_iteratorIPcES1_cET0_T_S4_S3_RSaIT1_E}
+  [D] 'function char* std::__uninitialized_move_if_noexcept_a<char*, char*, std::allocator<char> >(char*, char*, char*, std::allocator<char>&)'    {_ZSt34__uninitialized_move_if_noexcept_aIPcS0_SaIcEET0_T_S3_S2_RT1_}
+  [D] 'method void std::allocator_traits<std::allocator<char> >::destroy<char>(char*)'    {_ZNSt16allocator_traitsISaIcEE7destroyIcEEvRS0_PT_}
+  [D] 'function char* std::copy<std::move_iterator<char*>, char*>(std::move_iterator<char*>, std::move_iterator<char*>, char*)'    {_ZSt4copyISt13move_iteratorIPcES1_ET0_T_S4_S3_}
+  [D] 'method std::move_iterator<char*>::iterator_type std::move_iterator<char*>::base() const'    {_ZNKSt13move_iteratorIPcE4baseEv}
+  [D] 'method void std::move_iterator<char*>::move_iterator(std::move_iterator<char*>::iterator_type)'    {_ZNSt13move_iteratorIPcEC2ES0_, aliases _ZNSt13move_iteratorIPcEC1ES0_}
+  [D] 'function char* std::uninitialized_copy<std::move_iterator<char*>, char*>(std::move_iterator<char*>, std::move_iterator<char*>, char*)'    {_ZSt18uninitialized_copyISt13move_iteratorIPcES1_ET0_T_S4_S3_}
+  [D] 'method void std::vector<char, std::allocator<char> >::emplace_back<char>()'    {_ZNSt6vectorIcSaIcEE12emplace_backIJcEEEvDpOT_}
+
+21 Added functions:
+
+  [A] 'function bool __gnu_cxx::__is_null_pointer<char const>(const char*)'    {_ZN9__gnu_cxx17__is_null_pointerIKcEEbPT_}
+  [A] 'method __gnu_cxx::__normal_iterator<char*, std::vector<char, std::allocator<char> > >::reference __gnu_cxx::__normal_iterator<char*, std::vector<char, std::allocator<char> > >::operator*() const'    {_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv}
+  [A] 'method __gnu_cxx::__normal_iterator<char*, std::vector<char, std::allocator<char> > > __gnu_cxx::__normal_iterator<char*, std::vector<char, std::allocator<char> > >::operator-(__gnu_cxx::__normal_iterator<char*, std::vector<char, std::allocator<char> > >::difference_type) const'    {_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEmiEl}
+  [A] 'method bool __gnu_cxx::char_traits<char>::eq(const __gnu_cxx::char_traits<char>::char_type&)'    {_ZN9__gnu_cxx11char_traitsIcE2eqERKcS3_}
+  [A] 'method std::size_t __gnu_cxx::char_traits<char>::length()'    {_ZN9__gnu_cxx11char_traitsIcE6lengthEPKc}
+  [A] 'method __gnu_cxx::new_allocator<char>::size_type __gnu_cxx::new_allocator<char>::_M_max_size() const'    {_ZNK9__gnu_cxx13new_allocatorIcE11_M_max_sizeEv}
+  [A] 'method std::_Vector_base<char, std::allocator<char> >::_Vector_impl_data::_Vector_impl_data()'    {_ZNSt12_Vector_baseIcSaIcEE17_Vector_impl_dataC2Ev, aliases _ZNSt12_Vector_baseIcSaIcEE17_Vector_impl_dataC1Ev}
+  [A] 'method void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(const char*, const char*, std::forward_iterator_tag)'    {_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag}
+  [A] 'method void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string<>(const char*, const std::allocator<char>&)'    {_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_, aliases _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IS3_EEPKcRKS3_}
+  [A] 'function std::iterator_traits<char const*>::difference_type std::__distance<char const*>(const char*, const char*, std::random_access_iterator_tag)'    {_ZSt10__distanceIPKcENSt15iterator_traitsIT_E15difference_typeES3_S3_St26random_access_iterator_tag}
+  [A] 'function std::iterator_traits<char const*>::iterator_category std::__iterator_category<char const*>(const char* const&)'    {_ZSt19__iterator_categoryIPKcENSt15iterator_traitsIT_E17iterator_categoryERKS3_}
+  [A] 'function char* std::__relocate_a<char*, char*, std::allocator<char> >(char*, char*, char*, std::allocator<char>&)'    {_ZSt12__relocate_aIPcS0_SaIcEET0_T_S3_S2_RT1_}
+  [A] 'function std::__enable_if_t std::__relocate_a_1<char, char>(char*, char*, char*, std::allocator<char>&)'    {_ZSt14__relocate_a_1IccENSt9enable_ifIXsrSt24__is_bitwise_relocatableIT_vE5valueEPS2_E4typeES4_S4_S4_RSaIT0_E}
+  [A] 'method std::size_t std::char_traits<char>::length()'    {_ZNSt11char_traitsIcE6lengthEPKc}
+  [A] 'function std::iterator_traits<char const*>::difference_type std::distance<char const*>(const char*, const char*)'    {_ZSt8distanceIPKcENSt15iterator_traitsIT_E15difference_typeES3_S3_}
+  [A] 'function const unsigned long int& std::min<long unsigned int>(const unsigned long int&, const unsigned long int&)'    {_ZSt3minImERKT_S2_S2_}
+  [A] 'method std::vector<char, std::allocator<char> >::pointer std::vector<char, std::allocator<char> >::_S_do_relocate(std::vector<char, std::allocator<char> >::pointer, std::vector<char, std::allocator<char> >::pointer, std::vector<char, std::allocator<char> >::_Tp_alloc_type&, std::true_type)'    {_ZNSt6vectorIcSaIcEE14_S_do_relocateEPcS2_S2_RS0_St17integral_constantIbLb1EE}
+  [A] 'method std::vector<char, std::allocator<char> >::size_type std::vector<char, std::allocator<char> >::_S_max_size()'    {_ZNSt6vectorIcSaIcEE11_S_max_sizeERKS0_}
+  [A] 'method std::vector<char, std::allocator<char> >::pointer std::vector<char, std::allocator<char> >::_S_relocate(std::vector<char, std::allocator<char> >::pointer, std::vector<char, std::allocator<char> >::pointer, std::vector<char, std::allocator<char> >::_Tp_alloc_type&)'    {_ZNSt6vectorIcSaIcEE11_S_relocateEPcS2_S2_RS0_}
+  [A] 'method std::vector<char, std::allocator<char> >::reference std::vector<char, std::allocator<char> >::back()'    {_ZNSt6vectorIcSaIcEE4backEv}
+  [A] 'method std::vector<char, std::allocator<char> >::reference std::vector<char, std::allocator<char> >::emplace_back<char>()'    {_ZNSt6vectorIcSaIcEE12emplace_backIJcEEERcDpOT_}
+
+2 Removed function symbols not referenced by debug info:
+
+  [D] _fini
+  [D] _init
+
+2 Added function symbols not referenced by debug info:
+
+  [A] _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderD1Ev, aliases _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderD2Ev
+  [A] _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderD2Ev
+
diff --git a/tests/data/test-abidiff-exit/PR31513/reported/PR31513-reported-report-2.txt b/tests/data/test-abidiff-exit/PR31513/reported/PR31513-reported-report-2.txt
new file mode 100644
index 00000000..b8e9599b
--- /dev/null
+++ b/tests/data/test-abidiff-exit/PR31513/reported/PR31513-reported-report-2.txt
@@ -0,0 +1,5 @@ 
+Functions changes summary: 0 Removed (16 filtered out), 0 Changed (20 filtered out), 0 Added (21 filtered out) functions
+Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
+Function symbols changes summary: 0 Removed (2 filtered out), 0 Added (2 filtered out) function symbols not referenced by debug info
+Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info
+
diff --git a/tests/data/test-abidiff-exit/PR31513/reported/libloremipsum_gcc11.so b/tests/data/test-abidiff-exit/PR31513/reported/libloremipsum_gcc11.so
new file mode 100644
index 0000000000000000000000000000000000000000..94897ee3566b5523bfe9a1bcde962295c05a4425
GIT binary patch
literal 115160
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

literal 0
HcmV?d00001

diff --git a/tests/data/test-abidiff-exit/PR31513/reported/libloremipsum_gcc7.so b/tests/data/test-abidiff-exit/PR31513/reported/libloremipsum_gcc7.so
diff --git a/tests/data/test-abidiff-exit/PR31513/reported/libstdcpp.suppr b/tests/data/test-abidiff-exit/PR31513/reported/libstdcpp.suppr
new file mode 100644
index 00000000..6c376100
--- /dev/null
+++ b/tests/data/test-abidiff-exit/PR31513/reported/libstdcpp.suppr
@@ -0,0 +1,19 @@ 
+[suppress_function]
+# Suppress libstdc++ functions added to the binary.
+ change_kind = added-function
+ name_regexp = (^std::.*|^__gnu_cxx::.*)
+
+[suppress_function]
+# Suppress libstdc++ function symbols added to the binary.
+ change_kind = added-function
+ symbol_name_regexp = ^_ZNSt7__cxx11.*
+
+[suppress_function]
+# Suppress libstdc++ function deleted from the binary
+ change_kind = deleted-function
+ name_regexp = (^std::.*|^__gnu_cxx|)
+
+[suppress_function]
+# Suppress libstdc++ function symbols deleted from the binary
+ change_kind = deleted-function
+ symbol_name_regexp = (^_init$|^_fini$)
diff --git a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
index 058b6c80..89f4819d 100644
--- a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
+++ b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
@@ -1,5 +1,5 @@ 
 ================ changes of 'libtbb.so.2'===============
-  Functions changes summary: 0 Removed, 10 Changed (89 filtered out), 17 Added functions
+  Functions changes summary: 0 Removed, 3 Changed (96 filtered out), 17 Added functions
   Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
   Function symbols changes summary: 0 Removed, 0 Added function symbol not referenced by debug info
   Variable symbols changes summary: 3 Removed, 0 Added variable symbols not referenced by debug info
@@ -24,22 +24,7 @@ 
     [A] 'method void tbb::internal::concurrent_queue_base_v8::move_content(tbb::internal::concurrent_queue_base_v8&)'    {_ZN3tbb8internal24concurrent_queue_base_v812move_contentERS1_}
     [A] 'method void tbb::task_group_context::capture_fp_settings()'    {_ZN3tbb18task_group_context19capture_fp_settingsEv}
 
-  10 functions with some indirect sub-type change:
-
-    [C] 'method void tbb::filter::set_end_of_input()' at pipeline.cpp:710:1 has some indirect sub-type changes:
-      implicit parameter 0 of type 'tbb::filter*' has sub-type changes:
-        in pointed to type 'class tbb::filter' at pipeline.h:65:1:
-          type size hasn't changed
-          no member function changes (4 filtered);
-          1 data member changes (4 filtered):
-            type of 'input_buffer* my_input_buffer' changed:
-              in pointed to type 'class tbb::internal::input_buffer' at pipeline.cpp:52:1:
-                type size hasn't changed
-                1 data member change:
-                  type of 'tbb::spin_mutex array_mutex' changed:
-                    type size hasn't changed
-                    1 base class insertion:
-                      class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
+  3 functions with some indirect sub-type change:
 
     [C] 'method tbb::task& tbb::internal::allocate_root_with_context_proxy::allocate(std::size_t) const' at task.cpp:74:1 has some indirect sub-type changes:
       implicit parameter 0 of type 'const tbb::internal::allocate_root_with_context_proxy*' has sub-type changes:
@@ -101,10 +86,8 @@ 
                         1 member function insertion:
                           'method virtual tbb::task* tbb::internal::generic_scheduler::receive_or_steal_task(tbb::internal::reference_count&)' at scheduler.h:362:1, virtual at voffset 7/7
                         no member function changes (4 filtered);
-                        3 data member deletions:
+                        1 data member deletion:
                           'unsigned int hint_for_push', at offset 896 (in bits) at scheduler.h:171:1
-                          'volatile intptr_t* my_ref_top_priority', at offset 2560 (in bits) at scheduler.h:433:1
-                          'volatile uintptr_t* my_ref_reload_epoch', at offset 2752 (in bits) at scheduler.h:443:1
                         18 data member changes:
                           'uintptr_t my_stealing_threshold' offset changed from 704 to 832 (in bits) (by +128 bits)
                           type of 'market* my_market' changed:
@@ -178,20 +161,6 @@ 
                     1 data member change:
                       'tbb::spin_mutex mutex_ec' offset changed from 0 to 8 (in bits) (by +8 bits)
 
-    [C] 'method bool tbb::internal::hash_map_segment_base::internal_grow_predicate() const' at concurrent_hash_map.cpp:55:1 has some indirect sub-type changes:
-      implicit parameter 0 of type 'const tbb::internal::hash_map_segment_base*' has sub-type changes:
-        in pointed to type 'const tbb::internal::hash_map_segment_base':
-          in unqualified underlying type 'struct tbb::internal::hash_map_segment_base' at concurrent_hash_map.cpp:27:1:
-            type size hasn't changed
-            1 data member change:
-              type of 'tbb::internal::hash_map_segment_base::segment_mutex_t my_mutex' changed:
-                underlying type 'typedef tbb::spin_rw_mutex' at spin_rw_mutex.h:39:1 changed:
-                  underlying type 'class tbb::spin_rw_mutex_v3' at spin_rw_mutex.h:43:1 changed:
-                    type size hasn't changed
-                    1 base class insertion:
-                      class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
-                    no data member change (1 filtered);
-
     [C] 'function void tbb::internal::throw_exception_v4(tbb::internal::exception_id)' at tbb_misc.cpp:126:1 has some indirect sub-type changes:
       parameter 1 of type 'enum tbb::internal::exception_id' has sub-type changes:
         type size hasn't changed
@@ -200,42 +169,6 @@ 
         1 enumerator change:
           'tbb::internal::exception_id::eid_max' from value '20' to '21' at tbb_exception.h:79:1
 
-    [C] 'method void tbb::mutex::internal_construct()' at mutex.cpp:116:1 has some indirect sub-type changes:
-      implicit parameter 0 of type 'tbb::mutex*' has sub-type changes:
-        in pointed to type 'class tbb::mutex' at mutex.h:40:1:
-          type size hasn't changed
-          1 base class insertion:
-            class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
-
-    [C] 'method void tbb::queuing_mutex::internal_construct()' at queuing_mutex.cpp:113:1 has some indirect sub-type changes:
-      implicit parameter 0 of type 'tbb::queuing_mutex*' has sub-type changes:
-        in pointed to type 'class tbb::queuing_mutex' at queuing_mutex.h:45:1:
-          type size hasn't changed
-          1 base class insertion:
-            class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
-
-    [C] 'method void tbb::queuing_rw_mutex::internal_construct()' at queuing_rw_mutex.cpp:501:1 has some indirect sub-type changes:
-      implicit parameter 0 of type 'tbb::queuing_rw_mutex*' has sub-type changes:
-        in pointed to type 'class tbb::queuing_rw_mutex' at queuing_rw_mutex.h:47:1:
-          type size hasn't changed
-          1 base class insertion:
-            class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
-
-    [C] 'method void tbb::recursive_mutex::internal_construct()' at recursive_mutex.cpp:104:1 has some indirect sub-type changes:
-      implicit parameter 0 of type 'tbb::recursive_mutex*' has sub-type changes:
-        in pointed to type 'class tbb::recursive_mutex' at recursive_mutex.h:39:1:
-          type size hasn't changed
-          1 base class insertion:
-            class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
-
-    [C] 'method tbb::thread_bound_filter::result_type tbb::thread_bound_filter::process_item()' at pipeline.cpp:722:1 has some indirect sub-type changes:
-      implicit parameter 0 of type 'tbb::thread_bound_filter*' has sub-type changes:
-        in pointed to type 'class tbb::thread_bound_filter' at pipeline.h:197:1:
-          type size hasn't changed
-          1 base class change:
-            'class tbb::filter' at pipeline.h:74:1 changed:
-              details were reported earlier
-
   3 Removed variable symbols not referenced by debug info:
 
     [D] _ZTVN3rml16versioned_objectE
diff --git a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
index b82ec700..84f1c47d 100644
--- a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
+++ b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
@@ -1,5 +1,5 @@ 
 ================ changes of 'libtbb.so.2'===============
-  Functions changes summary: 0 Removed, 8 Changed (91 filtered out), 17 Added functions
+  Functions changes summary: 0 Removed, 2 Changed (97 filtered out), 17 Added functions
   Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
   Function symbols changes summary: 0 Removed, 0 Added function symbol not referenced by debug info
   Variable symbols changes summary: 3 Removed, 0 Added variable symbols not referenced by debug info
@@ -24,7 +24,7 @@ 
     [A] 'method void tbb::internal::concurrent_queue_base_v8::move_content(tbb::internal::concurrent_queue_base_v8&)'    {_ZN3tbb8internal24concurrent_queue_base_v812move_contentERS1_}
     [A] 'method void tbb::task_group_context::capture_fp_settings()'    {_ZN3tbb18task_group_context19capture_fp_settingsEv}
 
-  8 functions with some indirect sub-type change:
+  2 functions with some indirect sub-type change:
 
     [C] 'method tbb::task& tbb::internal::allocate_root_with_context_proxy::allocate(std::size_t) const' at task.cpp:74:1 has some indirect sub-type changes:
       implicit parameter 0 of type 'const tbb::internal::allocate_root_with_context_proxy*' has sub-type changes:
@@ -51,49 +51,6 @@ 
         1 enumerator change:
           'tbb::internal::exception_id::eid_max' from value '20' to '21' at tbb_exception.h:79:1
 
-    [C] 'method void tbb::mutex::internal_construct()' at mutex.cpp:116:1 has some indirect sub-type changes:
-      implicit parameter 0 of type 'tbb::mutex*' has sub-type changes:
-        in pointed to type 'class tbb::mutex' at mutex.h:40:1:
-          type size hasn't changed
-          1 base class insertion:
-            class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
-
-    [C] 'method void tbb::queuing_mutex::internal_construct()' at queuing_mutex.cpp:113:1 has some indirect sub-type changes:
-      implicit parameter 0 of type 'tbb::queuing_mutex*' has sub-type changes:
-        in pointed to type 'class tbb::queuing_mutex' at queuing_mutex.h:45:1:
-          type size hasn't changed
-          1 base class insertion:
-            class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
-
-    [C] 'method void tbb::queuing_rw_mutex::internal_construct()' at queuing_rw_mutex.cpp:501:1 has some indirect sub-type changes:
-      implicit parameter 0 of type 'tbb::queuing_rw_mutex*' has sub-type changes:
-        in pointed to type 'class tbb::queuing_rw_mutex' at queuing_rw_mutex.h:47:1:
-          type size hasn't changed
-          1 base class insertion:
-            class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
-
-    [C] 'method void tbb::recursive_mutex::internal_construct()' at recursive_mutex.cpp:104:1 has some indirect sub-type changes:
-      implicit parameter 0 of type 'tbb::recursive_mutex*' has sub-type changes:
-        in pointed to type 'class tbb::recursive_mutex' at recursive_mutex.h:39:1:
-          type size hasn't changed
-          1 base class insertion:
-            class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
-
-    [C] 'method void tbb::spin_mutex::internal_construct()' at spin_mutex.cpp:62:1 has some indirect sub-type changes:
-      implicit parameter 0 of type 'tbb::spin_mutex*' has sub-type changes:
-        in pointed to type 'class tbb::spin_mutex' at spin_mutex.h:40:1:
-          type size hasn't changed
-          1 base class insertion:
-            class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
-
-    [C] 'method void tbb::spin_rw_mutex_v3::internal_acquire_reader()' at spin_rw_mutex.cpp:73:1 has some indirect sub-type changes:
-      implicit parameter 0 of type 'tbb::spin_rw_mutex_v3*' has sub-type changes:
-        in pointed to type 'class tbb::spin_rw_mutex_v3' at spin_rw_mutex.h:42:1:
-          type size hasn't changed
-          1 base class insertion:
-            class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1
-          no data member change (1 filtered);
-
   3 Removed variable symbols not referenced by debug info:
 
     [D] _ZTVN3rml16versioned_objectE
diff --git a/tests/test-abidiff-exit.cc b/tests/test-abidiff-exit.cc
index afa357ab..3b0c13fc 100644
--- a/tests/test-abidiff-exit.cc
+++ b/tests/test-abidiff-exit.cc
@@ -1290,6 +1290,96 @@  InOutSpec in_out_specs[] =
     "data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr5-output-1.txt",
     "output/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr5-output-1.txt"
   },
+  {
+    "data/test-abidiff-exit/PR31513/reported/libloremipsum_gcc7.so",
+    "data/test-abidiff-exit/PR31513/reported/libloremipsum_gcc11.so",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "--no-default-suppression",
+    abigail::tools_utils::ABIDIFF_ABI_CHANGE | abigail::tools_utils::ABIDIFF_ABI_INCOMPATIBLE_CHANGE,
+    "data/test-abidiff-exit/PR31513/reported/PR31513-reported-report-1.txt",
+    "output/test-abidiff-exit/PR31513/reported/PR31513-reported-report-1.txt"
+  },
+  {
+    "data/test-abidiff-exit/PR31513/reported/libloremipsum_gcc7.so",
+    "data/test-abidiff-exit/PR31513/reported/libloremipsum_gcc11.so",
+    "data/test-abidiff-exit/PR31513/reported/libstdcpp.suppr",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "--no-default-suppression",
+    abigail::tools_utils::ABIDIFF_OK,
+    "data/test-abidiff-exit/PR31513/reported/PR31513-reported-report-2.txt",
+    "output/test-abidiff-exit/PR31513/reported/PR31513-reported-report-2.txt"
+  },
+  {
+    "data/test-abidiff-exit/PR31513/non-regr/libtest1-v0.so",
+    "data/test-abidiff-exit/PR31513/non-regr/libtest1-v1.so",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "--no-default-suppression",
+    abigail::tools_utils::ABIDIFF_ABI_CHANGE,
+    "data/test-abidiff-exit/PR31513/non-regr/report1.txt",
+    "output/test-abidiff-exit/PR31513/non-regr/report1.txt"
+  },
+  {
+    "data/test-abidiff-exit/PR31513/non-regr/libtest2-v0.so",
+    "data/test-abidiff-exit/PR31513/non-regr/libtest2-v1.so",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "--no-default-suppression",
+    abigail::tools_utils::ABIDIFF_ABI_CHANGE,
+    "data/test-abidiff-exit/PR31513/non-regr/report2.txt",
+    "output/test-abidiff-exit/PR31513/non-regr/report2.txt"
+  },
+  {
+    "data/test-abidiff-exit/PR31513/non-regr/libtest3-v0.so",
+    "data/test-abidiff-exit/PR31513/non-regr/libtest3-v1.so",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "--no-default-suppression",
+    abigail::tools_utils::ABIDIFF_ABI_CHANGE,
+    "data/test-abidiff-exit/PR31513/non-regr/report3.txt",
+    "output/test-abidiff-exit/PR31513/non-regr/report3.txt"
+  },
+  {
+    "data/test-abidiff-exit/PR31513/non-regr/libtest4-v0.so",
+    "data/test-abidiff-exit/PR31513/non-regr/libtest4-v1.so",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "--no-default-suppression",
+    abigail::tools_utils::ABIDIFF_ABI_CHANGE,
+    "data/test-abidiff-exit/PR31513/non-regr/report4.txt",
+    "output/test-abidiff-exit/PR31513/non-regr/report4.txt"
+  },
 #ifdef WITH_BTF
   {
     "data/test-abidiff-exit/btf/test0-v0.o",