From 23603f1f837caeff45c6960722c2cad690db801d Mon Sep 17 00:00:00 2001 From: Lucas De Marchi Date: Sun, 31 May 2015 15:38:47 -0300 Subject: [PATCH] build: cache modules from playground Now that we are able to build our own test modules, also allow to use cached modules so a) kernel headers are not required and b) distro maintainers are happy. It's still need a "--disable-test-modules" in the configure since the default is enabled. There's no license problems anymore since all modules come from our own repository, we ship the sources and the modules can be easily rebuilt. --- Makefile.am | 5 +++++ configure.ac | 6 ++++++ testsuite/module-playground/.gitignore | 1 + testsuite/module-playground/Makefile | 9 +++++++++ .../module-playground/cache/mod-fake-cciss.ko | Bin 0 -> 5504 bytes .../module-playground/cache/mod-fake-hpsa.ko | Bin 0 -> 5264 bytes .../module-playground/cache/mod-fake-scsi-mod.ko | Bin 0 -> 4328 bytes testsuite/module-playground/cache/mod-foo-a.ko | Bin 0 -> 4392 bytes testsuite/module-playground/cache/mod-foo-b.ko | Bin 0 -> 4392 bytes testsuite/module-playground/cache/mod-foo-c.ko | Bin 0 -> 4392 bytes testsuite/module-playground/cache/mod-foo.ko | Bin 0 -> 3296 bytes testsuite/module-playground/cache/mod-loop-a.ko | Bin 0 -> 4672 bytes testsuite/module-playground/cache/mod-loop-b.ko | Bin 0 -> 4672 bytes testsuite/module-playground/cache/mod-loop-c.ko | Bin 0 -> 4672 bytes testsuite/module-playground/cache/mod-loop-d.ko | Bin 0 -> 4672 bytes testsuite/module-playground/cache/mod-loop-e.ko | Bin 0 -> 4672 bytes testsuite/module-playground/cache/mod-simple.ko | Bin 0 -> 3472 bytes 17 files changed, 21 insertions(+) create mode 100644 testsuite/module-playground/cache/mod-fake-cciss.ko create mode 100644 testsuite/module-playground/cache/mod-fake-hpsa.ko create mode 100644 testsuite/module-playground/cache/mod-fake-scsi-mod.ko create mode 100644 testsuite/module-playground/cache/mod-foo-a.ko create mode 100644 testsuite/module-playground/cache/mod-foo-b.ko create mode 100644 testsuite/module-playground/cache/mod-foo-c.ko create mode 100644 testsuite/module-playground/cache/mod-foo.ko create mode 100644 testsuite/module-playground/cache/mod-loop-a.ko create mode 100644 testsuite/module-playground/cache/mod-loop-b.ko create mode 100644 testsuite/module-playground/cache/mod-loop-c.ko create mode 100644 testsuite/module-playground/cache/mod-loop-d.ko create mode 100644 testsuite/module-playground/cache/mod-loop-e.ko create mode 100644 testsuite/module-playground/cache/mod-simple.ko diff --git a/Makefile.am b/Makefile.am index 9457655..b991936 100644 --- a/Makefile.am +++ b/Makefile.am @@ -230,7 +230,12 @@ build-module-playground: cp -r $(top_srcdir)/$(MODULE_PLAYGROUND) $(top_builddir)/$(MODULE_PLAYGROUND) && \ find $(top_builddir)/$(MODULE_PLAYGROUND) -type d -exec chmod +w {} \; ; \ fi +if BUILD_MODULES $(MAKE) -C $(MODULE_PLAYGROUND) +else + $(MAKE) -C $(MODULE_PLAYGROUND) FAKE_BUILD=1 +endif + rootfs: build-module-playground $(CREATE_ROOTFS) diff --git a/configure.ac b/configure.ac index be597b4..6e67584 100644 --- a/configure.ac +++ b/configure.ac @@ -127,6 +127,11 @@ AC_ARG_ENABLE([manpages], [], enable_manpages=yes) AM_CONDITIONAL([BUILD_MANPAGES], [test "x$enable_manpages" = "xyes"]) +AC_ARG_ENABLE([test-modules], + AS_HELP_STRING([--disable-test-modules], [disable building test modules during make check: cached modules will be used @<:@default=enabled@:>@]), + [], enable_test_modules=yes) +AM_CONDITIONAL([BUILD_MODULES], [test "x$enable_test_modules" = "xyes"]) + AC_ARG_ENABLE([logging], AS_HELP_STRING([--disable-logging], [disable system logging @<:@default=enabled@:>@]), [], enable_logging=yes) @@ -282,4 +287,5 @@ AC_MSG_RESULT([ coverage: ${enable_coverage} doc: ${enable_gtk_doc} man: ${enable_manpages} + test-modules: ${enable_test_modules} ]) diff --git a/testsuite/module-playground/.gitignore b/testsuite/module-playground/.gitignore index 5cd3034..6767e0e 100644 --- a/testsuite/module-playground/.gitignore +++ b/testsuite/module-playground/.gitignore @@ -1,6 +1,7 @@ *o.cmd *.ko !mod-simple-*.ko +!cache/*.ko *.mod.c .tmp_versions modules.order diff --git a/testsuite/module-playground/Makefile b/testsuite/module-playground/Makefile index 5ba9ed2..a5f142f 100644 --- a/testsuite/module-playground/Makefile +++ b/testsuite/module-playground/Makefile @@ -38,6 +38,9 @@ else # normal makefile KDIR ?= /lib/modules/`uname -r`/build KVER ?= `uname -r` +ifeq ($(FAKE_BUILD),) + FAKE_BUILD=0 +endif ARCH_SPECIFIC_MODULES := mod-simple-x86_64.ko mod-simple-i386.ko mod-simple-sparc64.ko MY_MODULES := $(filter-out $(ARCH_SPECIFIC_MODULES),$(wildcard *.ko)) @@ -48,8 +51,14 @@ mod-simple-%.ko: mod-simple-%.c Makefile.arch $(eval arch=$(patsubst mod-simple-%.ko,%,$@)) $(MAKE) KDIR=$(KDIR_$(arch)) ARCH=$(arch) CROSS_COMPILE=$(CROSS_COMPILE_$(arch)) -f Makefile.arch +ifeq ($(FAKE_BUILD),0) modules: $(MAKE) -C $(KDIR) M=$$PWD +else +modules: + @echo " CP cache/*.ko" + @cp cache/*.ko . +endif arch-modules: $(ARCH_SPECIFIC_MODULES) diff --git a/testsuite/module-playground/cache/mod-fake-cciss.ko b/testsuite/module-playground/cache/mod-fake-cciss.ko new file mode 100644 index 0000000000000000000000000000000000000000..f61409aca05d2654e3ea2274062d8e4e7b7334cd GIT binary patch literal 5504 zcmeH~O>Epm6o6;rQhr)!T6(BJAWKxJ4XkDFZhmR1ZGM^*(kf7;aG-J>uhUrZdY84g zO5o6-^umdrP)}Tt5U9N&4u~K{>H#<+aj%4k)GMll5L629*>B>>WVXB6UOSR^-uvdg znR(+kp4sb@GiQ5pImSzloo1QFDPtSGnOsi9GJBErvV9;Qg-3&D>cSlR;p`tl&(|*% zZ_j*u^ugNJy@Rj+{C#3hKlibooBnL`^4&RWBdMLhccRg{>yKPBp;%^dyn;fpP&A`$ z6md2&@AgG*pWny!=s4Jku7c2sCpe8Esn~uqs37;7CKp+ zg37VwRLx1tO47?TO9N>FAWBoNWDd7Xxpt1@tyZ<2<5;(jXS#K4nE=~U9kT{$cZiEK z)be$-b8MNb?HtXvF^-u7lmOyX2Q$aOcfBz3MrWpGXPDEB7i*2tnWpPR`h=&ScN*@Z zub&DK7!|LY=w&~Qy})p5)zhrv)xEG1jk0TAqv~As-O-X^8pXVoKl9%Bw0`mYtX^+; zUbPig9oiYuN;P)onGwZ}v|i*=Sc^U5YS=X9n|@Hq`xRzD|BexR%P}+j z(2q$(V8CYfm%Lzw8Ia?CxKK;2ZM*8$nqh1QH5Yah-{{P!II%+=;uwJ+F4aQUGvY-* zveRwLjCt52_-U!aCS*o3AqYJm#g4nATAdwCQ{LF{PS&%-jw@PnYvWp0YwW2^5hRW6 z7qm>&*wdLJNE&-q&@xeD&t-}rY3zWYWunHO&lEw@*b9P|i5feUDJ0=tb|3p|OKvy< zphsATXUO2SglFrg=reuMa*62C?K6}pu3e(n&z zB=HU6pG*9A;=f27@8cL(jzZ@BKO{aP@m}yp`$*!)iQkdxngq{5NDp(3;?q=4of(DZgWQ2pi1wG zbcqEZ99QBy=9gPs3GuXY;p`2Yb$)mWS4Yenj?)x`?T{2q-#6iTxRsWa;-0|oa8_o? z0jqq5*)$m;e?#DpE4~aJ;3+1~0sAcD50v9+wf&pzq!bmQ!a2z&B!1_y@co%;yZ5L8 z4cKRy8&G|PHuEvk4?~S}&%S6h1CTsLQ#FZQszrJxlqE_r*SV__TQb RpqXm?f9L`+FLf@D|3AVa?CAgi literal 0 HcmV?d00001 diff --git a/testsuite/module-playground/cache/mod-fake-hpsa.ko b/testsuite/module-playground/cache/mod-fake-hpsa.ko new file mode 100644 index 0000000000000000000000000000000000000000..3d33ba766b68ed0db989751af8902a5055ddd809 GIT binary patch literal 5264 zcmeI0O=u)V6o4z4RpV~dP0V3g5eE@BJ1|YpPj*c(Ve+?0ARFROARtSp)7{xL>7Q}B zCnWwZtcdGr4}uEbyhOa{!GnmHb;X;9)r*K%MLdY&#YJI#ulv<>rKU!*<8=$V>%Fhu ztG}+FH}mT3;!A-n_!v7DPvb3$mCig*4PjmU`Ie6f+q*h+|mj=+4to)?@dg- z{=$uO&-N~Tb#3Uf|8ZhYuU{})gilTr(Q4TkhDl4ymM9rtLzs zU5M<$x}}#QORu^Grm{lwO1Ux>wHzZmVU>|H>sBGM3b*e#(ye2)TgOVbj^%D0OWiu^ zhjE;2`yA!Up~k3itWI^=Vs)}x$I)&b&vxs0s3oVGoUUgzTL7MGIYH!%FU~D5GP4

Jk1LIiDV1gPTdLYXxtC&;)c296eBBg zi=eS>r{S9yU2D9m=~|^&Do#E zjGWVOX&=%~i+26kTxVJoH`08QOFCOH*jOpk!rBb z-7Ux4Wg0AWH`oYMJHzm;uo=XL7h13-`4PZ0+l)=B3LEm=U@HtPM~gSz$Vm4-)7GPi z;YsAfPG(xtD;R$)!z>-ZIc4O7u}$v*JFeuC=!a`ro?~}siXi3KJ%W~rIo6jc zf|O%N1uYYE>{zAk2l#P8OGS(ckFY;($pr%ddWCtoj|?77 zcs6gm#}(i`!aO`q_H)F!K1%#K;`~_VJS6@O*>R4CG1h-W;%^f_O2I9+|B(2!#J?c^ zlEl9w{)xnYCjOhmZxTO6Q^DKq2RrQNn#3O={;tH!#J`pJEb(I)fJ5T-uM(e;_!jY( ziSzGuiTInu%V~A&E#Ru}zDM@^WPg(EKTUYHZug0QP4+*K{TT5dfe#4lc9q8WEAT;K z-|_Wx6L|aTgg%1bpkf^!2d=Wm3pNc<@PgGW7CTW)Cy9Zl)dAq_05FV|rG=+fW{rgz zBl!VRI;&u36l_GnstQ(7u(E=c6ijbtqwVO4cBB}DVhoBQC`O8re}`2|&0P#81NGOPmPtTCm`z3z~I)O9+7;erAs4_zjj>l5jZ=!}HIr zG~JcrWMvivP8jwyo`+dlriw6w+qRYF$q4zW7XAOiLr?|YGGZUF)*8MbJ(gyzH~xMX zQ+htLwi~QYMtmP~A9-(SP=IyTxB=xS=&CtE`XJ=kM}G5hj=v&sPUIW(MPQitd6jCZ zEtfIJ^H0^ju4o_aG8&R5T%Ny;4*q-O$NNjwwffI> z69m=x=N03}x_Etj{v%+j{_j)!`%o^Xny7&M3Owjf$9${w65lv2k_u=mrYoTQmp{KB zxKE7>l)nbKYW!<7ex2-a{b95ukN z|19IOXgbV0Dnf-V#$$5d(S`e8Lq$k(Td2!x7tMdC_WNiZJO~V9HQp`0e(nXPYX2_^ LO&^vjm)rjryg;kf literal 0 HcmV?d00001 diff --git a/testsuite/module-playground/cache/mod-fake-scsi-mod.ko b/testsuite/module-playground/cache/mod-fake-scsi-mod.ko new file mode 100644 index 0000000000000000000000000000000000000000..c0eb97415a8aeb896fc0972341595cffc61d7b69 GIT binary patch literal 4328 zcmeHKPiP!f82^%qT4S|Iv|8~`w<6LCJ8b@lHki7S#B5<(q9GCld7aF@B*X5^Yaj}wzBlj7ynUI(N{;$q=lj0j`~J_& z_hw(8tv}b_*9W}%;1uK%qX1ijIbT(56^_7R7(o6W{5klWJG%&vymaBkkD3>MzO;1z zFBcBH|HbcrExe}G^<|6bV(qP;UjF*f(HZoc%ZsC5DO_vrOC=jQ9+bGE{Okh*H^d{Wv@Y4cV4aBbkC%WGD1i1Al75t+?am z(ekq|OxH>aXXZ=oj+9|LEroGIbfZ@6HHbz1B#5J=1dVPOZV0*Fjyvhzx$d=l{@}Sk zXdhj7TT-;Vjkx=7++7Q=e@XU2tjH+sYzRTp{ufof;x(m6{3H-4?ce499{x)mn46xS zEFH&@aH2Hfo^;1bW0lb-D&v)j(s6vVI{yF_$5;OGnGd3s7~d?d zAuwJLttOdwAwoayMyY7UKI-sX0Jq_#o=$*rY6Vdy6j=H5ZPD9?|T{vbSql-BJT zfzOfl8GYW=_%{k4gqoHoHT?nU@OD)IOZpMpLVO7O^Z4Z}Z)#OVuH$tCJH&T}D;dOw zGG^)@Mtr28pT`g%Hl9PaeM;%)&pG?21GG#BR+$d0GD@xwsZ3J+$_aY!djPqPfDnsk zPd~pnD^AY{{Yf#}17@EV6*UFa;1NCNJ`RU$Ui88{lgSdop^=^Q`uhXj8l%HZhQCWF zvN<_~z<9mEd>o}wx6QM~_!6L+bC}0iPXRpw-WY7JTGZi(@%QJAYz=3ynlL7=VP$uW z1*H6Zl0W8+ZKeO9322`5^ShhdGS1JzJOQ|f993L)scB=vA2RU$vJaqx+wf=RMn0=_ z!S!fHwyy)*T*izep`7f=+SYpH-&|ZLV=gk}v&w*`LwdASw0tj8%8`41MB^us7R7&C z@7siQ%~eBTFME#1Hn#newzvEDp*FDVwdDoWE2_U*P(SsU^Wpke5u=>!_*W34#rm1F zQ(nf6qWEncpW{&f$rt-${5)bs@vkCI>y3Zk1>;DY#z3lm1 zW8YO~H2oB5QTZe}X^?#=^JO3qeTCnW=zegRyDwZzW&s#X#GyPH9TWavhO~$AB uZ|6?F*#1|`F~?kp8k}oXy^B#9?e3#fAsxQ6#rYTIBNy8MEDzq$c0k? literal 0 HcmV?d00001 diff --git a/testsuite/module-playground/cache/mod-foo-a.ko b/testsuite/module-playground/cache/mod-foo-a.ko new file mode 100644 index 0000000000000000000000000000000000000000..f2d406e1f5af78e16105777010ea15420cdecc39 GIT binary patch literal 4392 zcmeHK&1)T16hAK$zmkfLwlzi6SqP@cyS$e~u+h{P(wYR45?ce=gmE%&k_?$Q^ZI6< zn3bij>OY|1CLk^a7lH**0$p^W3wMIxLW>Y|CDK)ddd{75-rPGIZ)mmwr{NR~B7XvZ7XIcguE5yf>tB19_r; znM}ibey8Pb2Hy0fs;P-;y*hJgcHX|cv~0IKzTax6Hihm+VeB@EMg1g*qr`@G2mR5c zX8Kq`rgG)jyMGghe!8LWgziqy*>Ri) z_fcli`#NQV53z?C_^%Ai&CX8QV^~to*puq48n?%5^;c^XwMlynk736TeK+yXVA1JQ zPbE98)LjRaq@9dz2^YnwuQsEuTJHv7vl=u(p?_DU{`)EDUg2pEw*7DiR1gIzkC2k% zY>Q(Sy^g2-cjBg-x)iRi>Y(sI1kpx}2aOFJ90{V$Bn##^Eidk3^$24Rb)=?%A}2f_ znqnA4+i~RiD%}baC#xEu))RDtRjh?)7?fTQX0Do~uGdFRuu3aF)%1bVuVm?}e|X4( zM-GFCSn%i(_~S?5#${t@STJlzIcveOTrfBbo;0MKwcx2-FgOd28&b|%Fp>)fXTdXu zl(Uw;5p!8M3r-5#qjc8}!e4iL05df60VAK1sZ)qoj6BE+UtwJ2arX13#`FA02H(-R zcm)tHK)h@|J6eAj$RD*QG6EkVtr+>-WBg-{55qjmQ%t`=dK}mL*@^Ls3~BNm_9I4~ zS9$CGp!H47jQk5(0L@~W#mpl1f1dpwvc z7Z=`Mx!^3EclfzczX!~o9W{N*b)9jHHvt~~tT>op9tSy$g@qt{3h;Xb0izt46OeZb zMMJ-)Q^zsOgK@XhDx_-gli}V8X2s0(l_g5vgp|SO@%PW&tjRv0ef3zTs(U#Zr2iuR zL|;_MpDhAX*?)wKPh(hDsOL<8dD73nD!?)U*oeHKx&No5*t9+~7I|(^hwY_|^m=+1 zn{5IGnp3e7wpmH`quBKJAp;62`E0N(WQn+NcQLk+MZC-zk{m}X;$1)#T|0ZHIr(*ms5u+yhnRHlQ z$APl=yBuHQP<-+w{sg~*7{!;mjI3@qn96x!QR@;fdA!PeasJGfhK0Db4O z^)Ioa+zX;#wBJ3#ew7tvy<%UKKgEHv{M{(YAKhVMFZrW;qip_HIsP7wo2_9A$Wxw4 zmHwxitx-%U53<{yD*Z3LpS|2yV$cwVDcx^n>;JK2{q))>uKyRtiu3=3oR+lW{C`6o z!sMKYiP$d-z*Ovo{)xEors{s5@o7!PxsxBUKQNslUyMa^*{9m)CufbF(|(~^UCbZd QDP{3T`LY=*1T2W~FP|-VVE_OC literal 0 HcmV?d00001 diff --git a/testsuite/module-playground/cache/mod-foo-b.ko b/testsuite/module-playground/cache/mod-foo-b.ko new file mode 100644 index 0000000000000000000000000000000000000000..53bf3a9122dfb19ff3036e03a4df8dbc055ef8b8 GIT binary patch literal 4392 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 literal 0 HcmV?d00001 diff --git a/testsuite/module-playground/cache/mod-loop-a.ko b/testsuite/module-playground/cache/mod-loop-a.ko new file mode 100644 index 0000000000000000000000000000000000000000..51533d839ea89b0a0ce949303b3eabd2b1c0b7bc GIT binary patch literal 4672 zcmeHKPiP%Q7@u^jwVH~F|Ei*{BG^*j@?H`T38uW5*1SMcq9s@lVcqQ8=B?Sc`+U1E zHi&o!?8G!1y{z|Qy0Z@z!~ z?aVi`?;c-xY0uD*;5HgW5@FRmQ8 zc+TDU>)Rv!8U1kq?hf&%%9h4M^Idb z^5QNONp$}FwPy?c_1)`VY~T0>wOsdf5NF*@*WJAhlLn?dUk#?&+t}?4?2v)E+1V-k z5R|mT_JlL(jM-z=+Vj=%>V$m=wskj%0xt~?L(#iMIVat0XWpuC(yW`)7ISfu117`JtT{E| zz^(}6(+TW0QgC4=jMviKuIsk_q!(wfb9|8DLM0qDLas5+D2&&W*bkhn6{c=pdW5r@ zf*GiiZP>`dkuL@5tE8Fd-@Gtb#uEq6ls(3eWXV%!aLN*Q41$1IV&69S{%vsOuu~)~ zF|3SA))EKGfx=nhUS(9WmbkARD4Zomlu^lAVzeA6oFz|Q1t8WE4-SHWSmL1p9MAf_ z;`)|8fsyY~^7$AEJPCA2$pgRn1mQd$Bl(8J85PBscunGE{_i6BH-MVrd0Wa4i#o~O zPxPF`m3-3WFR!`o!%Z;4;u`s4kpUjbV-*lqd6!*hI*1!+e6&&8Smn|Arc{L9P7-T7lK zU3F^z0rM+QRaO95h+MjaKuO4p1_O#CV8Izwhy0R3cOU?i8ligT8xguuOGH_A$Z6rb zIQ;P~xT46}b-tRoF2u*d6%_+N-xKisvz0eqQMiNEUC-+UA^-fHkmCAhdyH=YhW`1y09LjuL~(Dcjq}g+J(x7b z{~IZNs44@m=kKF!^xq)|Y7IeC>=$`#pTcAE{{ac|`$}Qx^znJXO!@oRkUy+Rtk3zw z!@=ag&w(-pIc#;=mmQvaD1!g*YU}F@k|s5C0>9JE^!a>c+jVA$;?KS5{Xa9j|0u}n z@BbrVdi)2?S3wyoxt8Q-=rMlYCp^dcOAHX@_h*XhjCobGb&LM-#;3=Qb_#vXxHgo& gO`obo1-U`Su?}M`)ANUW(&YaF9aj4^huTp53$!<$9RL6T literal 0 HcmV?d00001 diff --git a/testsuite/module-playground/cache/mod-loop-b.ko b/testsuite/module-playground/cache/mod-loop-b.ko new file mode 100644 index 0000000000000000000000000000000000000000..5e2034898bb8a1ab42baaefd80882269406e89e1 GIT binary patch literal 4672 zcmeHK&5ImG6tCTm#*bC98$S|_+K6a^PBXJRB3ayJl1A$PvpwBo zcTbW<#FJn^C0D^iE`m3MCqcx49FjjECp{$~iWglxc!;pRSN+~}S<{ovg2xn0y;r|_ zU-i1`Rn12y7vC5i84=t@#H`3ij0(|vIOl7Ut%;|^lVT6>kHOD?-~6c+vH#G%={L{b zUVH1OOXFKpjf2NtJpZK>r|vhTEA?yFkXCy2i@!)@_39udCn~+wt0=lt8>zOVrX564 z$8JoUbuS2_SIqNK95l`24=Kul?|Nb4%`DC@FAArdwxW1uvFkdCdBQW7oY-yo=Ia3h zR?}v&-^nE`Jl^j31kIWKNI>%KcvwaV61sZu)j&RpF*y|iq0 zV$W-LQWHb#hC$>skp=n0kHW+hofu3XSEAcJ`~KK_f1wuG?FOD5IGa&7-G!Nj%Qs&_ zaT&_SE)+@hwb>tk@9WR)UjO^{?H^Ffw%5EcjW=z3_cn?&Fy+~9D4M;8-OIoZ8JM4& zn>G(aNjqXzt)teYIa#i}TAnIb&BJi4V=wTW#5)2-?=I!6WV4+*4Phl|oY59@VU&8- zdf2rZT|a1+{HCzLzGJ1{g;dDig6iRKc)=#k_@STDG)mg`23x108@tj;95tQPL7x?? zA}lx+ez+FFX(I(2X8dqH$?V#8+l{(m3Ma<}87@@9LL=lF;|%<8BMM#5N?U$nXQfA2 zjRed8$;xO9)jPJ_}2E{ zH!Cj#+i!mWH{Q>R5(BJbLfQWZSp!a6_V8#}u1LKkrSoTFO@KqYa%$o2m6P_u37eie zmH&X*lcy{zfGk8dJwl))WJQAk#SyUJ45~x+$e=e607{KeJ@bnQ-KZr(x#Tfgt{gIg zIevoJHpIa}PicOd2ldH?CcAf=2 zwj+%|huiOY9suQijX1}qOiOuF1&Bv^^v!J<0cc2`k=*~&;km{0J_`ds%|LD$FlisF|W3g*=K@pjVVUj+

iNF{7&bj$`uGgU6#1{y6;_s3vi#w9 z*8K;775VRx9?R3Pug~LkV2b=-ApiWGkmCMldyJn04E^(c0jzA-iQ*Yk8|R&I7+ zzW!T;>G2;ZehSL9l50tRg&yPQbHa11zsvwpUO!XZXUwajt-JJ(FFrkXwA0tujB7*b hyXaH3s36zLIM!jTWqSVbOcwdSLYLKE&7n3F{{kF5m~Q|8 literal 0 HcmV?d00001 diff --git a/testsuite/module-playground/cache/mod-loop-c.ko b/testsuite/module-playground/cache/mod-loop-c.ko new file mode 100644 index 0000000000000000000000000000000000000000..6a02b04fa790f9ee28453dfc777d3a527bf35180 GIT binary patch literal 4672 zcmeHKO^6&t6s}1}tFnDK`>FLnAu&4S=?p9ChjckhSjhb4{O`oQ`u>^r+e(~ zS+j_E5?%bktGB%f-VB}ukqqPz@gRs-Jt&CcMMVsVN_?;Sy_vG7XOjhwDd>8yzIuQC zy6RQ+YbO?-+EXeCZY41z`Xfe#=-%AtYnrWzyTzSiFYvd)W5F|ba#_4J_vI5C^*^8e zcI(Lg(j)&ofBui{N3}S0KOtSNU%ZI4+O2Q>pplgegP5MEc2_Q-=#^S&vK2L)Ad1?K zH)YpV5JZpJFGq3EuxD>Flmp*WVWOrN=9U(O+ew>IJiXBI+{8Yv>_s>Bn!f#HfPieM zmLAvqFjax{qSlNM4b@g*Bbf$oW%O2d#fFMo?wapSPs)m%C|AqJo|&!Nrxus&cC1vZ zo!S^$Ck!IDfh@=;eiSCQXvbiB)`)KR>`Nmr{Ek{+w-YEQa5tk)x(hS&+uuEm;yRS| zT_}?1r>(y}L)LN5s4$H;9cOnoF1_*f$EczGAKRVoPSTk2Y&Gm8b#3li28Lu{ZgzIc zJ_IH0ustb{%5i(VQhmHKQJJ(4!M2W7pxi_qhN5?sax&R$rS7VbNg8Lg$y^wvO0I<+ zx!UoAM%ix&3HDu?sY~r8tO^Oc z!Vk|xuvu1BG#WZLu-Co4Tdt|njx zs$>fafsp#8AbsT|b-kSni&c2y;F+?g@Z(te)ES(z#C3xpAePuS1ix_zZX9-oge69d zQJ=NME&YMPSz^C2>a&(O&>t9_B}R==pS8qTe_(KyK6wp*SWDbK2m)e>I|gt(>-UP^ zF6SpO@;ydA?;(K)fR>Cr@S9H(&f{^CuWOu9(fbn5X}q8R8%X{|phfY#qUA?KjpS}6 z`nJZ6eA4CReT|QZQzSP<^dq37Mm|r|62n960OaAw%=w>5RFf|>ZXy}~)e!s}z{d*m zhL@Q!V?E!MnGwGXv2zLV(O$MNHfpfjvWtf&J&~#;rTyn%O@K|id~*Kj}fCP#*Ycyu^30>N;eqcKY55~y(#4)y`@D%yq(zAmd zrLi}$cm;i~d#sSx$M}lk*9!{f%=qzi%E!L~7~0I|{~Tc0^7+b-PlHU6|2iFE6>TNU zAAaY&{{XNe|6S5!c^dZgdAtTpk^i&gpT84QT>os3@eRPxKc5%C>h?KN+}md3{4;$W zCX3?#m6YBwm4VOa@7*E#uaX0^hM+0-i#)au;3@L|CJFNUYGLT|<88o-^7mdr{;(#o zKIadAo{Ic;IZ&n`hpndjeuw8Cis1jd*}C}!Ns~Eq0>9Hv`h32!?HV&g@#nti{XZ;t zf4l|d-~W5U^6?)mz6$DC$+adwLXYwDKH)jmUt)kLzduu4XUvu1#<31#Ez9Q*_hga(b97kk%Q?&q#lMQGoMQk0 literal 0 HcmV?d00001 diff --git a/testsuite/module-playground/cache/mod-loop-d.ko b/testsuite/module-playground/cache/mod-loop-d.ko new file mode 100644 index 0000000000000000000000000000000000000000..3ab33480b44f2e9067ad73e4bc677fe1014aebb5 GIT binary patch literal 4672 zcmeHK-D@0G6u-%|*48LZ{Am3itzfI}bT^3)4W_IlF&juqv;?XU#>vbiJ7#ufotdo- zBEBeCQ1Mlt`l9$|QNe-;ixuii=^xN11Qr9uNn_F5vHhp8>!56D#7-`tDagyFB~J z-tUiob>OLQHm;5xIx5Af`wi(ze8w{!OOkyrmhEwI}OeLHlv;!d^$GYjW_dJ@HD zD4RP_B++kM|9pq6ZLj-LmTcMf&TM3V?;A!9>3?o#y4y)(%Jbc@oz$(lTNxOTf%%!4 zDf2Ltv?J!Eb<7$!$E&qxs}t2p^DrFi#1DNZ^^ZW&yGc1K-D+jdny}I=$!U|hD9(Iq zBkEXdognlofhR1m?^v0CCKIx^pn3$Gez-+5K@?;(jgq##$<}G;Ca!dn#GaEm=(A?k zgaxM}h}L5`t)yVXOb~6Pxn0|Cxp61T;N-X8qrf<8EJAjM5ti?-W@Y`aX~$Z=F6Es92b&M(d|9+5@4NhDB@bD~GWPX~_`LnSmz@c3^vGC%`oV_q> z(^IE*9hg6PsTGdIJHV)CkoxzlhL{S|aF@SKbO3 zG#8MfC{aj~Y=R94jH9BdUd6!A_b~kay_PrLQFwyYQ_uSa=woc|N(iylUqm z&||;S2z0pp9_Im2-q(n8Y|6Bhe@q34M|t$kZ5aV*NFI^g|I^{Q#yqLM&~hC+Xiwy% z*K@uYm;eT2x{U#%ZKAz>OJn_vS%9O>I?Xe=K#z8;AJ`7U4`bwf;uza8_?7uTD`)#V zN@H(g=?3~-_gF#K$N0+Pmm3P^)cEms(&JwR3~lQ9KMxo-Jzx6x6v&kMZ_pK1l~(fn z;dj>khk%v&?~)$N)3B${;|*ZS{GTEJ{GE{E{%3oPp9T#5^L+uVY(Em!_d4gF>AN6T z7XKfl{{c}Zdj38fp#K&*P-_Uas67y!TK9|G%rPt8Yk})XWL|PTT48{mQoM%n-#(uWbFFm#iOOLHhcC zCQOh2VEI!}#!9Xw`4xJMpU(-;vHmgxM0x#8ai1}-iZ*Z3Kfd_%*wIc;Uo)-^rSGy& e)ue*lAmdnvv6kui!!udt|2$n*do+jIQ2Yl*B$w_0 literal 0 HcmV?d00001 diff --git a/testsuite/module-playground/cache/mod-loop-e.ko b/testsuite/module-playground/cache/mod-loop-e.ko new file mode 100644 index 0000000000000000000000000000000000000000..efe93ff0be98d10bbc2e0050dbf8eda23af7be1b GIT binary patch literal 4672 zcmeGfO=uid_$5=V)+kNX8WnXA#T4CPH;IP^Q??{A8%RpD1nMD-lbP4-nAw?iXSOy- z@uFa${+tAFy$FJWRXhkPEc8(E=3NklqBj-2Db(+K^L;z7ZzoLy9{XV5_y6<0dGC8~ z-&k0Fet2j|@E8)uML{uFh~8ZVURP*cJR}|v2LQhheir-|Pp*lL^E*EUADlSy`NG5} zpT5@}zwqSMS*1?XZwS{KSFRwe^%^@@6=(hOAWsQuz4gney4M(*ZY6;mB}vBp zQSyxaTGELEd*P5~9EHA&Q#rf5xVkL7Zq`gXv&&uIOYM1SuXr858QRZ9$Z!JLQgl6x zGZ{I4(mF0gAloty(piXB!Dy90oRyuHw;B4g(@xcys?;hcUYu*#r&d<&c1OxqJF_vh zZX6|EfGFsvVG^gdXm`N%f|lL>(N{-a{tKEh2%A*$@R_HX}n>z{AY%5~4kIO}Y??*4t0SzyWY-B2dI#k*C3Ju0v`H#cKXKubGn zPdmq)Nqe$dd$u}Nowg_7Sa)P3y;L5BrgxKiPP*O7yba-`Sto~0#^NNC&Su%OWHQ~Ui2;(ye zoHjCWK@!HBY3|o`TYl1wGdMXu=y0PF4mzRGm}eBmTS@FoCu@eOo3|d}Y^2}@x?~Fu zvT)R*pnR1y^ZXk(2CMYO!8>KR^dnj7))^F8;dkHB*3@ z4{P;&m=qoZIHc8qS3XUArYA|iq4>-d{V(y7;urP5gY;hkSeDQ0N`FMuN$*~Q7ZhKs zCp}(1RQwTfiu7g(eg^O`tT+4n&~=;Z8{m&>bv{kf?}0z2?ZXGj&kxEE5gPar@UfD* z;bTV2vTyM_V59x2XgaWtGJU-0^M{9Ye38jCqx0utPk=+ac5>;3wFP%+-leBb?K)=u z8p=*R6}{I~+{ zCiI>t8WpK40PhrjqvB_J6n_6+%Lnf$Ji+>@=lz2Ewx*BoR~)83pIlR4_wzW|aa`pD zCd}&*CIIrjMn31JiIqN|Et8M2d92cc5#Sm8zXry}I_a^{cO54fPvoFKbG?``1qkMJ zJ2MEj3G#VivAL%m5TMUGD-isO9_`paaE!wbbL4s=jpG>n%Hr=R>EJ|V>gk z(8Ezzb1~tcFI2(*@A~MO8-j#}JAvQnM)rJQ;@e91>x6r*BZ5c_PK-`ZFgupDurW9hJ9cCY3uDr5I5pQe;vvAR!cXR=8%W`C zC-jf9s;G;g8V#~*qT$<@U1zY5mw9igyL9~Y(3o*%a@wdjgz)Rq@WZMV2VQ7bQ3ULqh{bCzN!T(Z~CFkI_@^K3MK8_Zgi~P7UD+I}%+`^vl%aQPY?9EaQ=E zq`XE_5K6%>2Qi+x0;OM1D+Rj{Fh8FN* z+ZPkx#Eu0WT_`56rjDd?k*!<`0#anFa`4qT_}UzNT@JoJ2j7^3Z_2?pFTt^wtYBY% zW*5*yhn5FwFZ&X_l{ea18SsLZ2in<)!fD&^t=PJg5q^`F)(LHTVdcH z>An!&4_LeSc)yWIKb@tzBqJY&(a!#^uB6GRtJ4{nAePM^+27HXm97ri3d`EBQGv4i z&(1G^eY^bKSBjJ;%pZPdvL`&qiEpa-w_#l;Q=fp`gn_E~e^{s2%3jA%&cgQ;mS<1z z4EZrhQ2Z9~cISVl4vOz65}qILV)p#_t|69y(ZE E3o8yF8~^|S literal 0 HcmV?d00001