[RFC] Add enum underlying type tests

Message ID 20201029100636.4092855-1-gprocida@google.com
State Rejected, archived
Headers
Series [RFC] Add enum underlying type tests |

Commit Message

Giuliano Procida Oct. 29, 2020, 10:06 a.m. UTC
  These tests currently illustrate a few issues with libabigail's
handling of enum types.

- signedness and changes thereof (as seen in DWARF) are not modelled
- size and alignment changes are reported twice
- size changes are not considered ABI incompatibilities

Also, *all* enum-underlying types are currently considered anonymous
and have the same name, even when they differ in size, alignment or
signedness. This causes non-deterministic ordering of such types in
XML output.

Signed-off-by: Giuliano Procida <gprocida@google.com>
---
 tests/data/Makefile.am                        |  12 +++++
 .../test-fixed-enum-type-report0.txt          |  12 +++++
 .../test-fixed-enum-type-report1.txt          |  12 +++++
 .../test-fixed-enum-type-v0.cc                |  11 +++++
 .../test-fixed-enum-type-v0.o                 | Bin 0 -> 2824 bytes
 .../test-fixed-enum-type-v1.cc                |  11 +++++
 .../test-fixed-enum-type-v1.o                 | Bin 0 -> 2872 bytes
 .../test-unfixed-enum-type-report0.txt        |  18 +++++++
 .../test-unfixed-enum-type-report1.txt        |  18 +++++++
 .../test-unfixed-enum-type-v0.c               |  11 +++++
 .../test-unfixed-enum-type-v0.o               | Bin 0 -> 2736 bytes
 .../test-unfixed-enum-type-v1.c               |  11 +++++
 .../test-unfixed-enum-type-v1.o               | Bin 0 -> 2800 bytes
 tests/test-abidiff-exit.cc                    |  44 ++++++++++++++++++
 14 files changed, 160 insertions(+)
 create mode 100644 tests/data/test-abidiff-exit/test-fixed-enum-type-report0.txt
 create mode 100644 tests/data/test-abidiff-exit/test-fixed-enum-type-report1.txt
 create mode 100644 tests/data/test-abidiff-exit/test-fixed-enum-type-v0.cc
 create mode 100644 tests/data/test-abidiff-exit/test-fixed-enum-type-v0.o
 create mode 100644 tests/data/test-abidiff-exit/test-fixed-enum-type-v1.cc
 create mode 100644 tests/data/test-abidiff-exit/test-fixed-enum-type-v1.o
 create mode 100644 tests/data/test-abidiff-exit/test-unfixed-enum-type-report0.txt
 create mode 100644 tests/data/test-abidiff-exit/test-unfixed-enum-type-report1.txt
 create mode 100644 tests/data/test-abidiff-exit/test-unfixed-enum-type-v0.c
 create mode 100644 tests/data/test-abidiff-exit/test-unfixed-enum-type-v0.o
 create mode 100644 tests/data/test-abidiff-exit/test-unfixed-enum-type-v1.c
 create mode 100644 tests/data/test-abidiff-exit/test-unfixed-enum-type-v1.o
  

Patch

diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am
index 40a575fa..3f58adb3 100644
--- a/tests/data/Makefile.am
+++ b/tests/data/Makefile.am
@@ -184,6 +184,18 @@  test-abidiff-exit/test-headers-dirs/test-headers-dir-v0.c \
 test-abidiff-exit/test-headers-dirs/test-headers-dir-v0.o \
 test-abidiff-exit/test-headers-dirs/test-headers-dir-v1.c \
 test-abidiff-exit/test-headers-dirs/test-headers-dir-v1.o \
+test-abidiff-exit/test-unfixed-enum-type-v0.c \
+test-abidiff-exit/test-unfixed-enum-type-v0.o \
+test-abidiff-exit/test-unfixed-enum-type-v1.c \
+test-abidiff-exit/test-unfixed-enum-type-v1.o \
+test-abidiff-exit/test-unfixed-enum-type-report0.txt \
+test-abidiff-exit/test-unfixed-enum-type-report1.txt \
+test-abidiff-exit/test-fixed-enum-type-v0.cc \
+test-abidiff-exit/test-fixed-enum-type-v0.o \
+test-abidiff-exit/test-fixed-enum-type-v1.cc \
+test-abidiff-exit/test-fixed-enum-type-v1.o \
+test-abidiff-exit/test-fixed-enum-type-report0.txt \
+test-abidiff-exit/test-fixed-enum-type-report1.txt \
 \
 test-diff-dwarf/test0-v0.cc		\
 test-diff-dwarf/test0-v0.o			\
diff --git a/tests/data/test-abidiff-exit/test-fixed-enum-type-report0.txt b/tests/data/test-abidiff-exit/test-fixed-enum-type-report0.txt
new file mode 100644
index 00000000..0ecb35a9
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-fixed-enum-type-report0.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 unsigned int fun(A, B)' has some indirect sub-type changes:
+    parameter 2 of type 'enum B' has sub-type changes:
+      type size changed from 8 to 64 (in bits)
+      type alignment changed from 8 to 64
+      type size changed from 8 to 64 (in bits)
+      type alignment changed from 8 to 64
+
diff --git a/tests/data/test-abidiff-exit/test-fixed-enum-type-report1.txt b/tests/data/test-abidiff-exit/test-fixed-enum-type-report1.txt
new file mode 100644
index 00000000..0ecb35a9
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-fixed-enum-type-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 unsigned int fun(A, B)' has some indirect sub-type changes:
+    parameter 2 of type 'enum B' has sub-type changes:
+      type size changed from 8 to 64 (in bits)
+      type alignment changed from 8 to 64
+      type size changed from 8 to 64 (in bits)
+      type alignment changed from 8 to 64
+
diff --git a/tests/data/test-abidiff-exit/test-fixed-enum-type-v0.cc b/tests/data/test-abidiff-exit/test-fixed-enum-type-v0.cc
new file mode 100644
index 00000000..a646b2db
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-fixed-enum-type-v0.cc
@@ -0,0 +1,11 @@ 
+enum A : signed char {
+  Ae = 0,
+};
+
+enum B : signed char {
+  Be = 0,
+};
+
+unsigned int fun(A a, B b) {
+  return sizeof(a) + sizeof(b);
+}
diff --git a/tests/data/test-abidiff-exit/test-fixed-enum-type-v0.o b/tests/data/test-abidiff-exit/test-fixed-enum-type-v0.o
new file mode 100644
index 0000000000000000000000000000000000000000..125f0660e3bd44e52786c6a9b50ac4180b9fef74
GIT binary patch
literal 2824
zcmb_d-D_M$6hCwC?q=g{mLyxTF`=xWm{RXGOKWK>iJPqbh)P++JhUM3?(Xb|?#_mL
z@76>giXf7J4;BPb6e{Y2|AFuR5&94KD)milsh%@;W;2=IRuB)|nR9;Ub7s!Wy>;o0
z%MN3piNP8iN*V>YS~%oulC41*=3(pV!EXnD9o*gDy1#$v&z~Grz5VkKIOe2LQN~Jn
z38cf52Jfsxp4AaxtU!~y&T-5!nb6tL%6#D+Qf`nk-x&*F(<Nl#TN)JUu<UC>3nAJZ
z_mOjM4+>2b7G9G=4|2IF>B8pNbEUH9mKIBMY<_C?DYVTox47nc-e&ot_p*1vV`WUc
z3~q7B!?K<Q&s#$WEFxg9EV#wgNR&3q6rpzFi;V^HDCE&2)oqrY6PWD<$}O`N<){Z;
zw3hYUK*ohCj*Q(a&EP1H2{)8M!sEp6^mlpN=VCnclf518-&_e=E$N+Kg6T9BicjZH
z{*q_c9S0+fMcnTS-mdgT0#~kWRqCftSI<^11ZRSkia$)og0FVD;8DMYVi>i0tGnmV
z`RC47{BFhXgz=te^`em&jbnc--tUXHpM=c;k3q$4^}^_J)otH6gJ)M=uWrDL$#4hY
zO1*xuvivG<_Ct}@;a6Wem2$L}<8nc`<`3QkwmZufk4+Un!#!9+oIWDCgX^W)Pn`Np
zp@9Y|oH?Q^w&ovyXDQvx&ZkqDY~~R+7d2Vrs^+(KE*O`{P`Z$IqX9|Qg=rg7ICf$N
zxiFJ~QvLF#Jfw5s*h3iY>AbNIlkR*>%Nd6{S>Y2H$6T$>L^!QVS2~A0k;Xfzn4YPD
zf2!~WHPbnor*cZ+6vsUO%LYz)Zz#EE;U6g(TT+r8|9ge&I+ZwCBjI@s;ykN(J5KEp
zctzo~CUad7#Ct=$V>l;KI`=e}@ZAK0c9?_^G~*b8h!4V`&70%yc3*TxsFQryY)1U%
z5p@`aqKntobQ$yo*Dja>g4Sp_<oHkoVwCUzp9?=u!q$7riTAcUQ8=Xc_<x{9j6r*4
z_6&us(SS7R!&EdnGzFf)iTv#wxuxvwiEK@J9tG-~|LQN_X)~bWb^aeMot>Zl4)mL>
zS#}Ne@4TyU>MMeDkJF!pXca#@CgBfgKpLdeWVCG?sIf6Jepi7j6VH^fZC^(?tNxn0
z6xyHar`OJ|zm1q36CwCYfp3vukZrq-x~%*=D!<+*%1`froqq>0imB^FR?_b((QOT=
zS?AaDhlpqS-%^+P<iGfTto$uA_~yuCaH!RJHS(qMx6SV;;Jh|evtGZ3KSw5O|MoNX
zkNzgwU+*i`W9O#Wzbdey3a0m--hSJk&cwcZ2*ENHg+%w$Bzyf7H_QKys{cFF8F}0P
EA59v|OaK4?

literal 0
HcmV?d00001

diff --git a/tests/data/test-abidiff-exit/test-fixed-enum-type-v1.cc b/tests/data/test-abidiff-exit/test-fixed-enum-type-v1.cc
new file mode 100644
index 00000000..3e42f65c
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-fixed-enum-type-v1.cc
@@ -0,0 +1,11 @@ 
+enum A : unsigned char {
+  Ae = 0,
+};
+
+enum B : unsigned long {
+  Be = 0,
+};
+
+unsigned int fun(A a, B b) {
+  return sizeof(a) + sizeof(b);
+}
diff --git a/tests/data/test-abidiff-exit/test-fixed-enum-type-v1.o b/tests/data/test-abidiff-exit/test-fixed-enum-type-v1.o
new file mode 100644
index 0000000000000000000000000000000000000000..b2d114d73948571196bd6f832d49a8bda1c57e87
GIT binary patch
literal 2872
zcmb_d&5ImG6n`~6Uu$QF*`0`4cZn@1Cd6(tB!(oi>+FvCSQQOo4hpjAnW_1}nVO-y
zCz;iQ7ZLZSB1pi)f(U{hyt#Kz-ux%LNAMsh=zG;wv$eHt1o1&vz4v>c_3EQPxc2Jx
z9Alt~!3G>k8U>gY5BY{<8&HE~xP5c)m%ZO_?oA(jeC^MJ1=PIr<99gbrA=9eN_h#S
z!%2hBZ9<7P5n!xHle5Wj%(F7t<hGzxzJm-a6lrp{q_SK>9tz#50Jcye{u>$;>FDfB
zLW?2Vob-{)eL5_*P*{0c3U?r%mvMkCv8O9F*Qu;lme_Ks`WV{gnN!|yU3a^7)qTOe
z;<6fMKLbvA&Bf}T0@vL@2P`6BFRnP{)JRmeYZRez>Wi%v@+cP2Bh_u!a;Grwvy>Y@
z0J%WP(V&Z-1B$tYvjcS;8T+HMh@;#r>??zW$BEw^%y`G=Vmk7Z-3j;a)`NCiIv3Vp
zAx(wi<Au{d71&$397dRmc+eBP;|)Xt!?EajN01w@-S(R2&ebn^SAq+{dCwmuQ^D7J
zT<~bnMlp=q{q@=9Oa7&cp5OEQZW!;1c0U@6@ig|Q;@&`X{3L7*c?>&mU%+juZ`QXS
zR_;81yB|jITr!#f+-NqhdS_nZtwAW#O8olsXH)L5U+ld%fX%9G^+c)s33g=-*GeCe
z?CEBu`cbaASbQA~QaE#@gPMn5|H@K2nKy#=W!~N+ZVqa)$Wgb#);VBYE<@=+dOi(E
zvJTKaJ5CPZ*~}mZ7Bf()U*4T#ItNZ1!>FgrMjz(q^&yAQ*!%ekAHg{0YIP>UX;n|)
zN3@hqpz(W3e$>MEmAs;6+DCI&&MKVZnEQX-z$x!%N=~m1%=7BbjV=43l675n-ft~?
zCC=AQ^%OLSb5-$noW?)kp2BIZ=6WHBcSm^la89Ch?rSdLvjl=pn1m3t;uwO655u6t
zThrdoKy=5blYH1}Mf~m&br^-Bhu7J384d*3E|>y>_INbn_@o44obUjj5kF4C_Pff7
z_jkHcIHCvqf1p*2LA^515`}HhfHXg!sc4+s6nGLR^0#m5o66pv$kwE1P@wblU;X8a
zZU$7m&i}oov-8t`g#N1y%dW3}w&|ZYJy!(jvrqpZqILZ2n1tsQsLwZHM7Aycmu!se
zCJH=Hf<d<JE2zt=f1)mh_OGHHy@GcA9mMRI2*JJrbsq^MvTb(|%gVp6^6NfPetIA5
z{1X*Z*NLK}-&CTnHK1mlU(fF&PQ2}ZUtQ+Y|Kk6l^0&<3ha-={p;qVB$bIE+n;$6P
zvNlw+UcZJvM<%O(2O0gNzl`?ReWiNr+!XtP0&l5;=|4bku<cKKV&6T4pg~0;(fu^Z
TUO&an^8Z=Y|CQ;CyzT!ts@Kx2

literal 0
HcmV?d00001

diff --git a/tests/data/test-abidiff-exit/test-unfixed-enum-type-report0.txt b/tests/data/test-abidiff-exit/test-unfixed-enum-type-report0.txt
new file mode 100644
index 00000000..972ca39d
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-unfixed-enum-type-report0.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 unsigned int fun(A, B)' has some indirect sub-type changes:
+    parameter 1 of type 'enum A' has sub-type changes:
+      type size changed from 32 to 64 (in bits)
+      type alignment changed from 32 to 64
+      type size changed from 32 to 64 (in bits)
+      type alignment changed from 32 to 64
+      1 enumerator change:
+        'A::Ae' from value '16777216' to '281474976710656'
+    parameter 2 of type 'enum B' has sub-type changes:
+      type size hasn't changed
+      1 enumerator change:
+        'B::Be' from value '2147483647' to '2147483649'
+
diff --git a/tests/data/test-abidiff-exit/test-unfixed-enum-type-report1.txt b/tests/data/test-abidiff-exit/test-unfixed-enum-type-report1.txt
new file mode 100644
index 00000000..972ca39d
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-unfixed-enum-type-report1.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 unsigned int fun(A, B)' has some indirect sub-type changes:
+    parameter 1 of type 'enum A' has sub-type changes:
+      type size changed from 32 to 64 (in bits)
+      type alignment changed from 32 to 64
+      type size changed from 32 to 64 (in bits)
+      type alignment changed from 32 to 64
+      1 enumerator change:
+        'A::Ae' from value '16777216' to '281474976710656'
+    parameter 2 of type 'enum B' has sub-type changes:
+      type size hasn't changed
+      1 enumerator change:
+        'B::Be' from value '2147483647' to '2147483649'
+
diff --git a/tests/data/test-abidiff-exit/test-unfixed-enum-type-v0.c b/tests/data/test-abidiff-exit/test-unfixed-enum-type-v0.c
new file mode 100644
index 00000000..363b94f2
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-unfixed-enum-type-v0.c
@@ -0,0 +1,11 @@ 
+enum A {
+  Ae = 1ull << 24,
+};
+
+enum B {
+  Be = (1ull << 31) - 1,
+};
+
+unsigned int fun(enum A a, enum B b) {
+  return sizeof(a) + sizeof(b);
+}
diff --git a/tests/data/test-abidiff-exit/test-unfixed-enum-type-v0.o b/tests/data/test-abidiff-exit/test-unfixed-enum-type-v0.o
new file mode 100644
index 0000000000000000000000000000000000000000..91cfa302e005376058fa43025e346844cfeaae3d
GIT binary patch
literal 2736
zcmbtV-D?|15TDgavYd;BZKc$%)1uHcu_1T0`{CvTyRw}+F-?md@Pi4#oTSx9Yn{y9
z$&njEUP{5_rG-E!1X{>HkjFd*`j7M_(8uI0kb*OFw<Dd`=LC|0+nxE%=kCt#-Tm&`
za!Lqb5-<;aiBW*(nLb|%*%B0B6xOfqJ=?qU|6b?ilN`b~|9OaGIyA_IagK+4Y#530
zsRbBFFC!pCmL_9Cl2$-EJwQxqk@cBu4P|3d!v6mLUC7irE{MTAIWciy@i6P4Zrnme
z>W{5#8HG=O2!#g59uc4A3#O5u$d8E8f#DC)C@qZKylI*%g^T7T^MWY~m}(M?+{r91
z<}{e*JURemZ1L^5k&BGZj;|CbLTT*5;y6GygZ7bTrH~rKbmu4~egL#Hed0R%NW`t-
zWWX0V3h^pGgkyLvxQhY;=?7NFtu?!{YDu@#vVz@hY3)qgmC!kJ1_q;CD1MYV_E$!1
zq*557<ND3IE33t(8@w^f=Rs>5uKc)OT$=f&c)|YCo-SIgpySH9x^$)2tf1(4mBw86
z{H!(mRne*!t(xQSx|N34cH12v%e&Qdt5)EYx1<knWohYRaq_Y(Hyt+$Xw7^*6>$J3
z!m@E`zg!2=9TpSE2XepTQcogIA5pkb3;E&SQcFYGYiJO`i6iw|8eZ%tDUHOArp@kc
z*#S2LHA!Ts#@2NPV4Eb60bvs#(ikv!2qVA%^9X$C2poGdfebiw>EL6u8;$KluL<AO
zS#-%1@d}Tj%si<$6XCQfn?NLv&p5B(gGddGPbnF1P)Kx+@l#<v*~ia+B{J{DQ6hMX
z(c^H<6esqS!SE6G3rFBZg;S03I>GjLTiE(I2VOKcm<wb#0K4i04%lVi2iucdj$M`I
zPJOfK*4n5Gd8b_V<jw)L<2h~}Z&Tc5tLaL1!4zOu+O3wv>utO3K-zeREkAH7KPxBM
z*sOU@D|}d0@$WHBpfBw$?<a>UDTdFTak7omDHI6PZ`fMgD8}plXHiFe@UH$d=&Q%1
zbe#Wh5@Mv=(xXnlw^Gc8*vaUh2Tv7FeMJ!WEd3CO=J3;F68?e)q@SXxH|n;lsL?Sp
zzM;VBo@d19w%;S1RR4dfe)gyO>Gjg<uOg<$L<sIFaGiu0>9(7wOUgf{E+y|1<)`;V
z&%ccr#pF7X4e4K%XqN#sbAFz0Bc9~Hp)T_$Z}I<C`D<oy>%e2s*K%G){#5?Dc~=4F
z*-*{AeunQOleB-+3HwKX2lnTErF!(-6#KCPS5?6yh|!y^`_q}|cMqYcD4b4(LVwWL
SPjQp{ud4bV^<6_w_kRsH`M$*f

literal 0
HcmV?d00001

diff --git a/tests/data/test-abidiff-exit/test-unfixed-enum-type-v1.c b/tests/data/test-abidiff-exit/test-unfixed-enum-type-v1.c
new file mode 100644
index 00000000..41d3a6a1
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-unfixed-enum-type-v1.c
@@ -0,0 +1,11 @@ 
+enum A {
+  Ae = 1ull << 48,
+};
+
+enum B {
+  Be = (1ull << 31) + 1,
+};
+
+unsigned int fun(enum A a, enum B b) {
+  return sizeof(a) + sizeof(b);
+}
diff --git a/tests/data/test-abidiff-exit/test-unfixed-enum-type-v1.o b/tests/data/test-abidiff-exit/test-unfixed-enum-type-v1.o
new file mode 100644
index 0000000000000000000000000000000000000000..8a29654cf7c49bd13cb64b6f168c8df55bc1a592
GIT binary patch
literal 2800
zcmbVN-D@0G6hC)oztU-zBwMjDRi{*K3eGg?m;E5=CQ;i|E3pvJ2MM#gcRw_HciEY(
ziBjx?h`|>Ng(8R)eDFbh?|c7={saC2f`x*V_MDk}HnTUA3Oz9Qobx-M_jA7c;NuT7
zLI9J1McCCC1(?h4%9Tj0KpCcB{p!x&S9fkb*%|!%;2`2(Jp2R4Y~)dl5)nE=Qwc4z
z1cl-?1cb;FvzDZ`Vr;fpASJU5h3uCoh+LjnZdp=`w;`L2?D@t(ffy^1jfrcBUkg6k
zrd>2-?z9S3RE~WbDRoRZDc&xXZL2g>niNxoiC57nE3D$8ZQHBmi}oe^f-TC})ht-W
zBUmi^7TES824EKvhO3hI#N}zL7<(U|UM*9q%Hey<(*T7W2F8}va^^7BeV1zE2T+Vg
z9=KuFnNzP8oWfCv|4QRHMw^B67ZA!IbO)-@-ja1!szJvMw|mmPIq%h?@Z38v7S}@c
zwcLTfa^mw$22%`F&~7SOciJk1&8})XBgl*Lo(wxZxbn%mvoimlbHO|9%{gu-94NWa
zluGv7HB|k6t+lXq{+xU6jN>*Px8Vods@CdvRd*0z!(X>m-3|TfrVIeCtgKvgX5W|9
zwy)xZ?)=#kv4m|Oie`ed{pJRUtqC!6uu%LNXMY57`iP>nTPjWbkXaeeUq^=+P8~56
zPv<|+(u`K>$*1)nuHs0Tg_bn3^!Yb!79=iF!e~KsjuS{MS}?W;BftWCAAEct9M5YC
zS+M7B!t3Zal~{-2xqQ)~pbMypXLta0mdV7G2&Y+9@FSXx88H5))?YF3OIpWE6%p-Y
za#v1hobn|1|9S$ay1YUi1J^3t(t??v=R)~&?2LS3AOEF&a7W|Rd$ND<g6$683FKiv
z<}H>&xfOy}_d_4NY7l_emz%y<m(@XYqpccUv_-OCt@h>35wqX-RTHmSGGw!@B!^%L
z@M_&oN8(H1sctAeyxeXO`n9igkZf%<`hJJsW!?YFvKb7dwdM8XJQXbr&zsiCH%UiP
zA<VpaH<C^X*^EDqHaZ_K8$XY+W=<-{_5UO#L8dRg|MYjPBz#C*i+`E$NaJ*_2;#F$
z{|=%B{LGw$KcxW)U(^vYeb>-xVieHR;M_>`Uf++<p4R`Yz7!l!{nM*v_FqRVt^R!t
zuA@CkrtbzC)9Qbw>+?EMeY)>v{T^bJllw$5qQ|<>PYh_z^_hQ*cv}2zeVO0*pZM=}
zyx|7FjXVasR<6s)FFM|IzpsJw?5H`<pW(YGq^(~sW&P-{!STGV)Q?%4azE1Gnr@ih
nb$V;fc-j;5?jZ!T)D+Uum<>mB{**T@{zu*a@59JgFyo&CQZmIL

literal 0
HcmV?d00001

diff --git a/tests/test-abidiff-exit.cc b/tests/test-abidiff-exit.cc
index 6ebe2a09..5d114097 100644
--- a/tests/test-abidiff-exit.cc
+++ b/tests/test-abidiff-exit.cc
@@ -352,6 +352,50 @@  InOutSpec in_out_specs[] =
     "data/test-abidiff-exit/test-headers-dirs/test-headers-dir-report-2.txt",
     "output/test-abidiff-exit/test-headers-dirs/test-headers-dir-report-2.txt"
   },
+  {
+    "data/test-abidiff-exit/test-unfixed-enum-type-v0.o",
+    "data/test-abidiff-exit/test-unfixed-enum-type-v1.o",
+    "",
+    "",
+    "",
+    "--no-default-suppression --no-show-locs",
+    abigail::tools_utils::ABIDIFF_ABI_CHANGE,
+    "data/test-abidiff-exit/test-unfixed-enum-type-report0.txt",
+    "output/test-abidiff-exit/test-unfixed-enum-type-report0.txt",
+  },
+  {
+    "data/test-abidiff-exit/test-unfixed-enum-type-v0.o",
+    "data/test-abidiff-exit/test-unfixed-enum-type-v1.o",
+    "",
+    "",
+    "",
+    "--no-default-suppression --no-show-locs --harmless",
+    abigail::tools_utils::ABIDIFF_ABI_CHANGE,
+    "data/test-abidiff-exit/test-unfixed-enum-type-report1.txt",
+    "output/test-abidiff-exit/test-unfixed-enum-type-report1.txt",
+  },
+  {
+    "data/test-abidiff-exit/test-fixed-enum-type-v0.o",
+    "data/test-abidiff-exit/test-fixed-enum-type-v1.o",
+    "",
+    "",
+    "",
+    "--no-default-suppression --no-show-locs",
+    abigail::tools_utils::ABIDIFF_ABI_CHANGE,
+    "data/test-abidiff-exit/test-fixed-enum-type-report0.txt",
+    "output/test-abidiff-exit/test-fixed-enum-type-report0.txt",
+  },
+  {
+    "data/test-abidiff-exit/test-fixed-enum-type-v0.o",
+    "data/test-abidiff-exit/test-fixed-enum-type-v1.o",
+    "",
+    "",
+    "",
+    "--no-default-suppression --no-show-locs --harmless",
+    abigail::tools_utils::ABIDIFF_ABI_CHANGE,
+    "data/test-abidiff-exit/test-fixed-enum-type-report1.txt",
+    "output/test-abidiff-exit/test-fixed-enum-type-report1.txt",
+  },
   {0, 0, 0 ,0, 0, 0, abigail::tools_utils::ABIDIFF_OK, 0, 0}
 };