public inbox for libabigail@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] rhbz2114909 - Refer to changed base classes using their non-qualified names
@ 2022-10-20 15:19 Dodji Seketeli
  0 siblings, 0 replies; only message in thread
From: Dodji Seketeli @ 2022-10-20 15:19 UTC (permalink / raw)
  To: libabigail

Hello,

This was filled at https://bugzilla.redhat.com/show_bug.cgi?id=2114909

When analysing the edit script representing the changes in the base
base classes of a given class, libabigail refers to the changed base
classes using their names.

The problem is that there can be several changed base classes that
have the same name, even though their /qualified/ names are
different.  That was wreaking having havoc down the road.

To solve the problem, use the qualified name of the base classes,
instead of their simple name.

Note that this change did also ameliorate other existing change
reports in the test suite.

While testing the fix, I realized that class_decl::base_spec doesn't
set its qualified name.  That leads to the fact that it's the
non-qualified name that is used for sorting the base class names in
the change reports.  This can lead to instabilities, depending on the
platform, in test output.  This is also fixed.

Fixed thus.

	* src/abg-comparison.cc
	(class_diff::ensure_lookup_tables_populated): Refer to the added
	or removed base class using its qualified name.
	* src/abg-ir.cc (class_decl::base_spec::base_spec): Set the
	qualified name of the base_spec.
	* tests/data/test-abidiff-exit/test-rhbz2114909-report-1.txt: New
	reference test output.
	* tests/data/test-abidiff-exit/test-rhbz2114909-v{0,1}.o: New
	input test binaries.
	* tests/data/test-abidiff-exit/test-rhbz2114909-v{0,1}.cc: Source
	code of the binaries, above.
	* tests/data/Makefile.am: Add the new test materials above to
	source distribution.
	* tests/test-abidiff-exit.cc (in_out_specs): Add the new tests to
	this harness.
	* tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt: Adjust.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
---
 src/abg-comparison.cc                         |   4 +-
 src/abg-ir.cc                                 |   1 +
 tests/data/Makefile.am                        |   7 ++-
 .../test-rhbz2114909-report-1.txt             |  18 ++++++++
 .../test-abidiff-exit/test-rhbz2114909-v0.cc  |  34 +++++++++++++++
 .../test-abidiff-exit/test-rhbz2114909-v0.o   | Bin 0 -> 3440 bytes
 .../test-abidiff-exit/test-rhbz2114909-v1.cc  |  35 +++++++++++++++
 .../test-abidiff-exit/test-rhbz2114909-v1.o   | Bin 0 -> 3304 bytes
 .../test-abidiff/test-PR18791-report0.txt     |  41 ++++--------------
 ...-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt |  40 ++++-------------
 tests/test-abidiff-exit.cc                    |  13 +++++-
 11 files changed, 124 insertions(+), 69 deletions(-)
 create mode 100644 tests/data/test-abidiff-exit/test-rhbz2114909-report-1.txt
 create mode 100644 tests/data/test-abidiff-exit/test-rhbz2114909-v0.cc
 create mode 100644 tests/data/test-abidiff-exit/test-rhbz2114909-v0.o
 create mode 100644 tests/data/test-abidiff-exit/test-rhbz2114909-v1.cc
 create mode 100644 tests/data/test-abidiff-exit/test-rhbz2114909-v1.o

diff --git a/src/abg-comparison.cc b/src/abg-comparison.cc
index c536f66f..6e3b2b55 100644
--- a/src/abg-comparison.cc
+++ b/src/abg-comparison.cc
@@ -5189,7 +5189,7 @@ class_diff::ensure_lookup_tables_populated(void) const
 	unsigned i = it->index();
 	class_decl::base_spec_sptr b =
 	  first_class_decl()->get_base_specifiers()[i];
-	string name = b->get_base_class()->get_name();
+	string name = b->get_base_class()->get_qualified_name();
 	ABG_ASSERT(get_priv()->deleted_bases_.find(name)
 	       == get_priv()->deleted_bases_.end());
 	get_priv()->deleted_bases_[name] = b;
@@ -5207,7 +5207,7 @@ class_diff::ensure_lookup_tables_populated(void) const
 	    unsigned i = *iit;
 	    class_decl::base_spec_sptr b =
 	      second_class_decl()->get_base_specifiers()[i];
-	    string name = b->get_base_class()->get_name();
+	    string name = b->get_base_class()->get_qualified_name();
 	    ABG_ASSERT(get_priv()->inserted_bases_.find(name)
 		   == get_priv()->inserted_bases_.end());
 	    string_base_sptr_map::const_iterator j =
diff --git a/src/abg-ir.cc b/src/abg-ir.cc
index b53df0cd..b914faaa 100644
--- a/src/abg-ir.cc
+++ b/src/abg-ir.cc
@@ -23015,6 +23015,7 @@ class_decl::base_spec::base_spec(const class_decl_sptr& base,
     priv_(new priv(base, offset_in_bits, is_virtual))
 {
   runtime_type_instance(this);
+  set_qualified_name(base->get_qualified_name());
 }
 
 /// Get the base class referred to by the current base class
diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am
index 7bddd646..5ec33924 100644
--- a/tests/data/Makefile.am
+++ b/tests/data/Makefile.am
@@ -236,7 +236,12 @@ test-abidiff-exit/test-PR29144-v1.o \
 test-abidiff-exit/ld-2.28-210.so \
 test-abidiff-exit/ld-2.28-211.so \
 test-abidiff-exit/test-ld-2.28-210.so--ld-2.28-211.so.txt \
-test-abidiff-exit/ld-2.28-21x.so.sources.txt \
+test-abidiff-exit/ld-2.28-21x.so.sources.txt  \
+test-abidiff-exit/test-rhbz2114909-v0.cc      \
+test-abidiff-exit/test-rhbz2114909-v0.o       \
+test-abidiff-exit/test-rhbz2114909-v1.cc      \
+test-abidiff-exit/test-rhbz2114909-v1.o       \
+test-abidiff-exit/test-rhbz2114909-report-1.txt  \
 \
 test-diff-dwarf/test0-v0.cc		\
 test-diff-dwarf/test0-v0.o			\
diff --git a/tests/data/test-abidiff-exit/test-rhbz2114909-report-1.txt b/tests/data/test-abidiff-exit/test-rhbz2114909-report-1.txt
new file mode 100644
index 00000000..7cb15229
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-rhbz2114909-report-1.txt
@@ -0,0 +1,18 @@
+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 void foo(ns2::C&)' at test-rhbz2114909-v1.cc:33:1 has some indirect sub-type changes:
+    parameter 1 of type 'ns2::C&' has sub-type changes:
+      in referenced type 'class ns2::C' at test-rhbz2114909-v1.cc:22:1:
+        type size changed from 160 to 96 (in bits)
+        2 base class deletions:
+          class ns1::base_1 at test-rhbz2114909-v0.cc:3:1
+          class ns2::base_1 at test-rhbz2114909-v0.cc:16:1
+        1 base class change:
+          'class ns1::base_2' at test-rhbz2114909-v0.cc:8:1 changed:
+        2 data member changes:
+          'int m0' offset changed from 96 to 32 (in bits) (by -64 bits)
+          'char m1' offset changed from 128 to 64 (in bits) (by -64 bits)
+
diff --git a/tests/data/test-abidiff-exit/test-rhbz2114909-v0.cc b/tests/data/test-abidiff-exit/test-rhbz2114909-v0.cc
new file mode 100644
index 00000000..a13dec4e
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-rhbz2114909-v0.cc
@@ -0,0 +1,34 @@
+namespace ns1
+{
+class base_1
+{
+  int m0;
+};
+
+class base_2
+{
+  int m0;
+};
+}
+
+namespace ns2
+{
+class base_1
+{
+  int m0;
+};
+
+class C : public base_1, ns1::base_1, ns1::base_2
+{
+  int m0;
+  char m1;
+public:
+  C()
+  {}
+};
+}
+
+void
+foo(ns2::C&)
+{
+}
diff --git a/tests/data/test-abidiff-exit/test-rhbz2114909-v0.o b/tests/data/test-abidiff-exit/test-rhbz2114909-v0.o
new file mode 100644
index 0000000000000000000000000000000000000000..6f6a0feaed6d35b6933c0379f3fc27ef02f6c71f
GIT binary patch
literal 3440
zcmb_e&2Jl35TEC@YbP5!&PQp|6tYGjQi|6f4aH7LYh<NOMHQk*y;LA~ZEtKtY)9)&
zlmr1nNT^jWMdHALBX^EmIJ83Iz!3=v{s4p!5`r5N2bg)D=WJda6#*mddo#b8-^}y8
zkL10To7X}@fD!>$;LuViKsI)$m!w*P(=ZLUR`30|dheY-9=!2Y9C;BCGB83RDH#_S
z%zz&1^l~8Th!}(#YdDB@79vr?08Y^m7O^OSqYOec9BFlYKyn@u-(rL$C-0+1ag!Vu
zE5o!n9Ua-BBqChEF&w4}F^W1PqsBx#2Qx8Bk{m6AI4e_$Z_qY>zyW1U$W_E+ls~cA
z?Sin5G)Mg)@#!ey<1~amYC=*HK*Yg_Ev3X|vuNI!DqwJ^C=`-1#S|_-B#eZa3iqQ@
zQNqIKpdTHX5YHy2Ok;j-enLz}lV`9iGTvM=DJMYm88FQ&rhz?=p(kbzJR|)ic?=r0
z#no9XD><D+-h6qsj%CaUmRX#|U&%=l0P%6mcLSY?qZ}$<nmL%I<&6_BG=p7BaxlDr
z?Fr$BtB|7_RC|=I=2cW882dcVLWn;Tahj;J_@OdSDul#*XuO}6Oo#{=8JLD8J_s2Y
zT)BM_H)dn)A|8occ?GIY&#mP8Qywa}*->6x*@f$Cx2*Do3%Qr9T;9&xIV+#d=d*=e
z(OTGW>(;8{vm>29Z>8J*PRCttxE<GP)zEajT61}?a4CIh(MmU<)^t3`G`np#Q}5Q_
zY-JiPKeN@UI@MOgX>DaTTYGLVv+enA&+lctX7wPS%PkhOMIa;{0MffzyH@*ObDdBE
zu9wS8)&ln7{6A;`H9d@<g&$pLq~SJ;hlD8+Y|9-(aGD+BU<1TnQp}A-V-L`I4srTO
z<gs`qk^C@Jj-R@Q0eyJrNO{BX`(MMHxc$Rmd=r8zJPa}VkIEsyngJunFanJJN{{&r
z7(0gHeSpcpdIm@Tgq_fjt?I!j<_WGo&XowK$B3>P$z*>5!lU@T$o3N&&L*5?g*rC4
zM5xmhB%wU=(UulKk!Mvm$@Xg+j&G8bT@6?9k2L%#w!hQxeYStna5mu=R`m7D2O52}
zPWgayoT{(KKh1uMr@q}}TlH1p?=zm`S>d0seVJ!Hzr{H9IM`>fd;4wQsp9N={kf?$
z-`(@Ut~<U1cD2_7+jF-ZyY5zZ8kJUOvx`2dJJqV^?jCVFp3`Z#M=4vaj;knGLa78-
zq+RQ_+b;eUwL4wkweeP`d%jb9i|s~d$KLk3+pg#Db1k=7+4P*Y%fIcvOmj%4o~eCP
zxk{`I?hV@%8<Z3pga!AS{IAk5M0Eah7(;jM-}31^=sBsZsz0GQHB;VSy5A)t1>`PY
zz5)~Iep8%!7wCN<S;kM#N%-pw{!B(d^w@Ru=@^Bt@L|mcxTNZ_^gD;G{~>Rv;?w%+
ze(CG456OuT>~MW`9|<GT>sJsPR{uAye}_mYRG(gTz5X_0lvAw}RVk0S{<{j`S=Cqb
z+lUY2U*!Y!`D6I^PvHN`{LEwcA2VMIgD0seLqx4xxjsXM_Jx10g27_G-WSzB75F78
zlvC%gGryn$dDi(~AWoqr_N!@~7KNhDIqhE(KgC!0u-e4C%k{q}0|oz4m0X=qXF|XG
c6n}^B-vSu{(fc=nzG3_(um9@+msFkqHwLm4X#fBK

literal 0
HcmV?d00001

diff --git a/tests/data/test-abidiff-exit/test-rhbz2114909-v1.cc b/tests/data/test-abidiff-exit/test-rhbz2114909-v1.cc
new file mode 100644
index 00000000..f56843d3
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-rhbz2114909-v1.cc
@@ -0,0 +1,35 @@
+namespace ns1
+{
+class base_1
+{
+  int m0;
+};
+
+class base_2
+{
+  int m0;
+};
+}
+
+namespace ns2
+{
+
+class base_1
+{
+  int m0;
+};
+
+class C : public ns1::base_2
+{
+  int m0;
+  char m1;
+public:
+  C()
+  {}
+};
+}
+
+void
+foo(ns2::C&)
+{
+}
diff --git a/tests/data/test-abidiff-exit/test-rhbz2114909-v1.o b/tests/data/test-abidiff-exit/test-rhbz2114909-v1.o
new file mode 100644
index 0000000000000000000000000000000000000000..b7687f8291ec69acf5efac19dc24fd08ed01b631
GIT binary patch
literal 3304
zcmb_ePiP}$6n|gRG}BI#P1|*C?LsHAi(S`DGTFK&U3aa7?sjo0QrOFa#7QzuqD@jJ
z)7q_wh#(X%>*7H~4}u489z1yQpa`-DPlBK~LA>j2!Gpdxd9R&*O+nNL^S$?e-~01@
z@B7}Dyt#7gdQ2%0Qg96pH9-MBOCHM0p|}i>z-hR>y8qki{u>YPz4Yym2q!=pG#jTO
zOGA{*h!X4e9Z+kCj1W4ajHK!mU_40>Qeq_0?goHnMM!^$z-R>~)R|<mM6-%)XF}T%
z)p20fAQQu=fSL<)tNW;reL}VX<7$+cX;g8X*y!~@Wshu97N$P>0WDHA#NKN`I&=V)
zg1E7iRaeZid2_mi#<8*zBx|Z^-0!41pPn}3^K<i)YATs|6n7L;@w90!ndFB1IR~bB
z&5UDtMsdbCoJpPqidsY?!&cADV&u@Ln=YEq&NeXmSOP5;XK^DOB#oOnh4F6U<it@Q
zO20g_H%qHZkzZ^EAe~`jc#5`$ALa^28KeTD3tvScfwoT~S4#bvP7$Nx;fKO}SjU)}
zkDVHX4IL8-#tzhYR=pjIqjB}lC9M7W+9f<wr?LVyx9?SpP`$%QWpQN(Zmiw5Di<$0
z&sa{;F4~S&EEJ1{l2f)8*1d+c>IOWKD_*d2onX7`U2S?@&u`aJb^Utl>Tc<B?((9Q
zYeK!{`jBt+I$plfYrN9VH`_sevt4s*?WWt_%x|=Jy?%bn54?WR&-<;~UeR$D%Y`x!
zl8XSj9mlTM|JPV2q<|Zh%96E!b-3^kN)VPC2Wlb<zXX2hif6384jT(~BE@=mT&SN8
zQN;JwLG5PL+(gp2hm&U!r;jMS6VInJ@5Cyp(d%e1fQOD0cLe_UYuF^7{V*6GiRcOs
zP2v!?>mk5W9LA1e1jGj`JvJAIiDMWx158EMb8zoZI1T;IN)5&_PIUDt&O|t^{yghb
z5uBdTr&&Lv;jF@AEKtP`ItXRzKO%}xXDn1^LGor;-`8+_kV5)c!+q92*Kk(h3l{YC
z$O%#2@WEv}$*<c#&hunXb-2Yky+=fXzco<7VJ`RwtY2ZS$F~@#nnmjdcK>cCaBIi|
zf52NJ1>SA|cEb%^uxtH3*uJ;v+6}L^-K@5|8$Fy0Ww%!Iy`3Y|uJ3l6-cgs$cGnXZ
zOd%q{)ljeZIvo#x)9h|9@NDeTTt9H@ud?3kZrfXaZ_D$8yPV5wRX2RM<MH193!6h{
zs+pXd#9C(IpbuCl+bCsGAuM{<H2(q(LrC|30&S>w{;faV2R$aGmHa=G5+U7|?iuy#
za>Rzj0ymSv4%Dw?Cw)%u1<_Uf^q7R7WAJ-YBBa~Ch;uqd=D#yoi1?DI+tNOVt-r(v
zD*m*7>Mwo$jUh1+0*jkP`jIdqJwN?(8kWDs`Cld{B+5^(w4Q$pF^VbcL@}gI&i|SK
z%q73@*AXA)|10~;`z2w-Px!kh_}}LXnHNXq;wSul_Sekd8~s9S{$l?r3Un^KT!G;M
z`|EX)`ibFJD9~DT|A*{f5<}*?|CfjlJHH2fesa(0{4)57zu?1iQ>p?5Mfz#L0RMG{
izPdl%iD9KOxc?T|UzpTg^vM(af8q6iCx*;*|GxoU#SDu8

literal 0
HcmV?d00001

diff --git a/tests/data/test-abidiff/test-PR18791-report0.txt b/tests/data/test-abidiff/test-PR18791-report0.txt
index 61635682..91733b7c 100644
--- a/tests/data/test-abidiff/test-PR18791-report0.txt
+++ b/tests/data/test-abidiff/test-PR18791-report0.txt
@@ -36,27 +36,10 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
                                     underlying type 'class std::list<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' changed:
                                       type name changed from 'std::list<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' to 'std::__cxx11::list<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >'
                                       type size changed from 128 to 192 (in bits)
-                                      1 base class change:
-                                        'class std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' changed:
-                                          type name changed from 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >'
-                                          type size changed from 128 to 192 (in bits)
-                                          1 data member change:
-                                            type of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl _M_impl' changed:
-                                              type name changed from 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl' to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl'
-                                              type size changed from 128 to 192 (in bits)
-                                              1 data member change:
-                                                type of 'std::__detail::_List_node_base _M_node' changed:
-                                                  type name changed from 'std::__detail::_List_node_base' to 'std::_List_node<long unsigned int>'
-                                                  type size changed from 128 to 192 (in bits)
-                                                  1 base class insertion:
-                                                    struct std::__detail::_List_node_base
-                                                  2 data member deletions:
-                                                    'std::__detail::_List_node_base* _M_next', at offset 0 (in bits)
-                                                    'std::__detail::_List_node_base* _M_prev', at offset 64 (in bits)
-                                                  1 data member insertion:
-                                                    'unsigned long int _M_data', at offset 128 (in bits)
-                                                and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node'
-                                            and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_M_impl' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_M_impl'
+                                      1 base class deletion:
+                                        class std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >
+                                      1 base class insertion:
+                                        class std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >
                                   'bool clearing_' offset changed from 128 to 192 (in bits) (by +64 bits)
 
   [C] 'method bool sigc::connection::blocked()' has some indirect sub-type changes:
@@ -125,18 +108,10 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
           type of 'std::list<sigc::slot_base, std::allocator<sigc::slot_base> > slots_' changed:
             type name changed from 'std::list<sigc::slot_base, std::allocator<sigc::slot_base> >' to 'std::__cxx11::list<sigc::slot_base, std::allocator<sigc::slot_base> >'
             type size changed from 128 to 192 (in bits)
-            1 base class change:
-              'class std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >' changed:
-                type name changed from 'std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >' to 'std::__cxx11::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >'
-                type size changed from 128 to 192 (in bits)
-                1 data member change:
-                  type of 'std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_List_impl _M_impl' changed:
-                    type name changed from 'std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_List_impl' to 'std::__cxx11::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_List_impl'
-                    type size changed from 128 to 192 (in bits)
-                    1 data member change:
-                      type of 'std::__detail::_List_node_base _M_node' changed, as reported earlier
-                      and name of 'std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_List_impl::_M_node' changed to 'std::__cxx11::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_List_impl::_M_node'
-                  and name of 'std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_M_impl' changed to 'std::__cxx11::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_M_impl'
+            1 base class deletion:
+              class std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >
+            1 base class insertion:
+              class std::__cxx11::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >
 
   [C] 'method bool sigc::internal::signal_impl::blocked()' has some indirect sub-type changes:
     implicit parameter 0 of type 'const sigc::internal::signal_impl*' has sub-type changes:
diff --git a/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt b/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
index 83f5750c..ec948e26 100644
--- a/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
+++ b/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
@@ -37,27 +37,10 @@
                                       underlying type 'class std::list<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' changed:
                                         type name changed from 'std::list<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' to 'std::__cxx11::list<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >'
                                         type size changed from 128 to 192 (in bits)
-                                        1 base class change:
-                                          'class std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' changed:
-                                            type name changed from 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >'
-                                            type size changed from 128 to 192 (in bits)
-                                            1 data member change:
-                                              type of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl _M_impl' changed:
-                                                type name changed from 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl' to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl'
-                                                type size changed from 128 to 192 (in bits)
-                                                1 data member change:
-                                                  type of 'std::__detail::_List_node_base _M_node' changed:
-                                                    type name changed from 'std::__detail::_List_node_base' to 'std::_List_node<long unsigned int>'
-                                                    type size changed from 128 to 192 (in bits)
-                                                    1 base class insertion:
-                                                      struct std::__detail::_List_node_base
-                                                    2 data member deletions:
-                                                      'std::__detail::_List_node_base* _M_next', at offset 0 (in bits)
-                                                      'std::__detail::_List_node_base* _M_prev', at offset 64 (in bits)
-                                                    1 data member insertion:
-                                                      'unsigned long int _M_data', at offset 128 (in bits)
-                                                  and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node'
-                                              and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_M_impl' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_M_impl'
+                                        1 base class deletion:
+                                          class std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >
+                                        1 base class insertion:
+                                          class std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >
                                     'bool clearing_' offset changed from 128 to 192 (in bits) (by +64 bits)
 
     [C] 'method void sigc::internal::signal_impl::block(bool)' has some indirect sub-type changes:
@@ -68,17 +51,10 @@
             type of 'std::list<sigc::slot_base, std::allocator<sigc::slot_base> > slots_' changed:
               type name changed from 'std::list<sigc::slot_base, std::allocator<sigc::slot_base> >' to 'std::__cxx11::list<sigc::slot_base, std::allocator<sigc::slot_base> >'
               type size changed from 128 to 192 (in bits)
-              1 base class change:
-                'class std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >' changed:
-                  type name changed from 'std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >' to 'std::__cxx11::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >'
-                  type size changed from 128 to 192 (in bits)
-                  1 data member change:
-                    type of 'std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_List_impl _M_impl' changed:
-                      type name changed from 'std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_List_impl' to 'std::__cxx11::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_List_impl'
-                      type size changed from 128 to 192 (in bits)
-                      1 data member change:
-                        name of 'std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_List_impl::_M_node' changed to 'std::__cxx11::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_List_impl::_M_node', size changed from 128 to 192 (in bits) (by +64 bits)
-                    and name of 'std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_M_impl' changed to 'std::__cxx11::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_M_impl'
+              1 base class deletion:
+                class std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >
+              1 base class insertion:
+                class std::__cxx11::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >
 
 ================ end of changes of 'libsigc-2.0.so.0.0.0'===============
 
diff --git a/tests/test-abidiff-exit.cc b/tests/test-abidiff-exit.cc
index 0ba99992..3dadf0fb 100644
--- a/tests/test-abidiff-exit.cc
+++ b/tests/test-abidiff-exit.cc
@@ -449,7 +449,7 @@ InOutSpec in_out_specs[] =
     "data/test-abidiff-exit/test-PR29144-report-2.txt",
     "output/test-abidiff-exit/test-PR29144-report-2.txt"
   },
-    {
+  {
     "data/test-abidiff-exit/ld-2.28-210.so",
     "data/test-abidiff-exit/ld-2.28-211.so",
     "",
@@ -460,6 +460,17 @@ InOutSpec in_out_specs[] =
     "data/test-abidiff-exit/test-ld-2.28-210.so--ld-2.28-211.so.txt",
     "output/test-abidiff-exit/test-ld-2.28-210.so--ld-2.28-211.so.txt"
   },
+  {
+    "data/test-abidiff-exit/test-rhbz2114909-v0.o",
+    "data/test-abidiff-exit/test-rhbz2114909-v1.o",
+    "",
+    "",
+    "",
+    "--no-default-suppression",
+    abigail::tools_utils::ABIDIFF_ABI_CHANGE,
+    "data/test-abidiff-exit/test-rhbz2114909-report-1.txt",
+    "output/test-abidiff-exit/test-rhbz2114909-report-1.txt"
+  },
   {0, 0, 0 ,0, 0, 0, abigail::tools_utils::ABIDIFF_OK, 0, 0}
 };
 
-- 
2.38.0


-- 
		Dodji


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-10-20 15:20 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-20 15:19 [PATCH] rhbz2114909 - Refer to changed base classes using their non-qualified names Dodji Seketeli

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).