@@ -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 =
@@ -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
@@ -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 \
new file mode 100644
@@ -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)
+
new file mode 100644
@@ -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&)
+{
+}
new file mode 100644
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
@@ -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&)
+{
+}
new file mode 100644
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
@@ -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:
@@ -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'===============
@@ -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}
};