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 94576553..b9919363 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 be597b47..6e675846 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 5cd3034f..6767e0e6 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 5ba9ed22..a5f142f9 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 zc-rllL2MgE6o$ter)f!n1bT=-pp`(V4S2L`J8>N9Dy^L+1-CL(E{XRRyp=b>zVyD z|IEC%^JYfAy;wdkB@)QD1UiF)x4^b1g8BmdK943)lGaYpXM{dWm#XO7^S@it7cXQU zls`D}XmjtkXxayg{EQ7-%_ZlN~Tz6l}tLLxQ~(R zvr^5Nc8zIs8XZuW8%8+SFH~pZ3bS#AnYhAqT%j5_sxxtg*_gugFu_TSgppHK7FD&= zNKvx0?qk#yW|e#?uCN$acrLE+Y+Ru_PZX3EQmxz2(ZyBqmeA;3F*GZ%EzF^uOv9RGZ&Y(JJ61(me&@Iwx z=r>KHki`nlq}0^ecZB;Tp{mwzV{962gS2ODWgWjkSTH8WG;u7?&b=GJ=mr@FNj?EP@}4 z;7>*H@d*BO1b-%iKikJxWRmF5J)S>DA1M@vqfoxm;X&N|nPoeD1#!qjxePqd@oT_a z9B%@D!124l|KRw2;4dY5`9t7WIKB=16OR81{3nj@0#8W2{6FCH9G^&Zxy$iafj{JU z4)_ko-va*fNH4z*{5_60f#2i!Ch(s*{wZ)N*~`BI{wBw_fP29GmG=wqkASCv?K|zTHMI9LVO(N7$csBrPD$PNThM+UIHr6ulowYaey1h2cKg@o+Z0U*a^gy-eg8UV z2Xu-Z(5cP=jSb`x*Mt2?V|!i?AnO!pTJ_R}cdCopg_72}d8JhWQ~H^j7qB@2%L&-5 zfXxV4R=_d>mKHF9AF99)fg1uZ1WpKi5V#=lK;S^{{NWNtmObzf+-e zLNxw|e77%Q6oAK$OF|oHQgWz@5G#aeV#%wu*J*J?qWm_AltzIPDH5tSoAsnwd4G&& z9mV`s3PO|<2P8n^#wCagJ#at>k+z6i4}}XtTtSEf0&$@Nsm$1KyX)~x>a2R~lXhq4 z^SpiY-n`j2$(wUa=hCSZ3MGXmP}Ga$z2njIB;1G4Aj;6EA$s-DYkqkZo$9-O^W%x> zw_mw+?#1--x7UVt-K+8U{Kjsp3s-)*c!S-W-TeN=8{zM!W1D2WYT0Ak8kM}J&y=%d zJ4?#h4NJ=tODo!0;VAZ?7xZaz7m*gzN6&0nSz=`muQ-}iv6xg*PpVi*s+dozsCA<_ z)uC9>^@NJW>7;70)JB98Id2II2+sIJSj7g2$KUSC)`j54QZ;_)^_6i870o z^JdN3vX$o?2GlZkoBc`K3$UYFzB|#}zhzv-UYU%$emS>kR&b73#Lm$k+Qv24ykuMB zMO9PvTs}AT!pwql;rxnHtzqm|1BH$<>Yn49W%fwN6WjNQf)0|G``71Yei+4?zb9tuu1Sp_v2L3a07FLwn44cZiP>tA7J&8 zS64Ucwo}g8Wu#I)Qw{J=0FSn32heACm2Pvpf}I9ZX`0EDn!A`&5%haSLaxH{TV- z;h8X9frtGPv@ZcSIPL@gkmI|+Z*lws;73#K{4?M)9RCLRYaIUp_!k`i75E<#^S8eJYwa~3fLI|8x^pkfawBO5U{*}X`QUp ziJt950w)AM2wV_&AaJ04{&2$N9B7_2HEv00Ph~{_mH-Zx6vXO6{4L@6k_94O7A#u9 zym~e4#twRHnM2H<-@;13GH{q)|J`ZHkr>a$c>FsVuNEt*h>yhhLOSB7?_=42oL;@$ z9HPJ35qg^6H(XzbIq?;&%I(8Y_`RjVJ104Q5=zZU=%0W&hLtbm6B7Hca{D?S@3@pC z_BDb1jKKb)#Qr;yc=Ptx1Ubu01|60udeu4j=0ORfd*xTLw_kd{<{S}FR y*j^R9lgV&jclHMbbC2s^yNAAL?V0=u`hAcGkHOiEkKe-*`~N_Re^HK&#aN literal 0 Hc-jL100001 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 zc-rk&O^6&t6t3=F<7Bg%-I$FLf6@_=M3`dsM>LBYS9aH(z$C0LBZDB7-tOAnX8LE+ zU9CIG!JwCjLGY#*5d<+Oa}W$fLC}LIFW$tfDB?vuMu}BD)!W@Q{W25DF%N29zi-}u zcfG1NR~j$snub!+&`Fd@8T~evJuk}N!)OYP@~4A*jqtU4rimVZ^};Kkv@iX7x%JTR z7b+iq_1C}a=L>$sPqY5cFRy*O|HyJdZccxba5N0Ljz#^5E;Lrx8pw>D>6)zXj*6W0w-w><01e zxV!G%_*!s6HmT3TE+OcSkf?goY*P|hkwdtI?$TYl4O(4Vnm3N|k#O9Y!zb{JF;km< zx;9&zGmi0{6;hX)5j{S<9*(*mGdDPAVUKU8Pkz8C-tuF-5j(D3b!>#WorxLUVJP{< zd;>de>UI%!e22+@gc2d`)Ugz;&`L!9%{%^PfOa(qkLUPXQL5=#LF_Z)1{T*z=K{jE z$xNAm$jNp5cHmnSvu!6Ly={*0M#MGwB=Y#Cl?Ct?R3m0u?SZWwDV@*)*8zMK!0!R@ zJpf(-@G$`22jJrXem{Wk2k;31KLFql0QkW^Omuh@{drTxr})xyeM>v?WP^4wUp^Ohct_Yf2OP{rx#f!yfG$4&1gB65Cm5W?dXgIRn;`f(@I*u4penlm^ZV+CXN7L!gE z(c#DV`sZekCILLZUykP9YbA%5O$~uR0^mB}N6&o+Yg&dM$?4bi41e?v9%m2pb+3|J zb{9tI2?bXt?ySs7ovfXl|2(OC1xufcs-7GzH7OsGIi`I(Ecpo_{<}cE>IqXHU|$(v z-zs^xf<6Z7RpoV{{>75|_mtGX1;oD!W^FG0q`rtHwVE#J?u_TLb!c9#DFRDHPb_lp7cE&bN< zKL_f+R#N{&N&P=aOpV_f9WMVLB~}CM*8uyJ|6Jlz&}T!&pDgQL&i;=9_8Rc2K9EO$ XO*(&2&O)_+dx7}hOT`uK*75%XhRB6e literal 0 Hc-jL100001 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 zc-rk(&1>976d$cOsl7?4-8hMZNvlJl4rPbkwF`|~CpJ#%HQ2^Yy5NgZW$oA&*2hND zmhPz`JvskC0=XDMj)5Ku4U~p}4>`1l-U@{t+EOU(sg#^tNN2Q9)<~Kaow-8z1Z-kTeeUguqDcfyoo35+r(<*0kC1RNd zb9^?lw6MBF^mefAdNWIHL-*CoOkLJJW7|~Uw*)|&%ns+XrV}uW8m@hjG+B!|O@D@b z!aQ5wGL4xjTA`EWYI*MJd|kb^ysEZ5#_U$03fFDNa`mQoqiN)Y(Bao1FX<)y z4_cU?pH?S$OF6Gj(F?Su)+*I^DwCBdb%K|n$1JA%?0kMX>UZow-{3s(x_mo&bKHQ@ zEvHR4+NRYkn@vKwo=yYyX+Xj!<<)NPFsnnT>6iihB7`(;Co&9E!!x>5x2XrZa95>O zLU}=$&ZbKa6*T^f>1_FtqHVZs-aRbW;4)E9AygQFctnVn>Fl_U!Dz5;`dYVZ5W3-W zN#4b5Uc;~+o{_R2=thp7Fp$~t1zte#B7z@5@S_Mmh~OmzKZfAP5&Q&#zlz|)2tI<~ zClP!U!B6#`V|*0JU(eFGh`b=>Gs@KIQ0G`ePSD$cNAnu+OCcWTC(`^V#0Puqn@Btz zuzv~WL%?r^c%0A2z;A!p@%|i^4zMymz{)x`h&aeZ-Sfh1tSo-mxS}my*5JBPO@Q5NM9a20_22nVEgAp45$DZ(4KoAe~N2kC4VtB7E@G9&|p-qdrG zi8_SH;5k12dDf*NXY7w_v_TW-ba71 zkN#T5w-U66tT#QshOEB@>#s=bKbo=rEyVv9Nc`#f2I7COl=O23bkqK?ga2Ae|6!_L z()o+{4J7_=f#2+t|6N3XSxKG?nEoE3zoz8N-(4hs4>R(2A|rnf5dSxn{XY6@h3ET!gslJjjP;LXtp6v#(*Exh^Tq!QU=>7vwa@Ha?hbus3AkNo#M*fBn|6_32l$7WD{}-Pvcwqnl literal 0 Hc-jL100001 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 Hc-jL100001 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 zc-rk(O>Epm6drF9k~D49gaUzx)*vKWl^yLS%OMe|64H{5lvIH#A{-*uv8P!R|17pQ zG(w0If=UH(<<<)l2Lx45NL56n9GVlCiaSL@^uVE2B@h%To$)@eXC1%nM)cSxd7tO= zd-J_{GxKKllXG)#a|M}_k*2A%PAISaO6+esRTepNRZk4b69wE!yd$GIq=JGaaLzI%^nVRi+RZSmP z%gnaD*VGR^-!|2$Lz10s8O#mX#N5on9MNlG#q%fTYK9)DXPG*$`$ol5->?NhP3A=H zNy`nHO%2aELx{<$%r%1v&XyN!`4zIxd`DlkjENF0(9wJ`KlRRZS-mj7pjLgxoNB0w z&}y#j>85z)_JQTOfl8`A?|O>-ANk<$#VEhL-rzEeCcbQH>)2j`!? zcIVZG|JuR*Z#oY*h1Rr7%nkhwO(Ty*lGQ+-$P+oZ%uG*@t0#F$JEfNB7#&eZ3dPq8 zqlJ=sl5cCD*-Q`EsrKz?u;GOI3fG}u*OmCq^+HBh-5On~S+<$COhUPzPD6G%B+)PB z)x%n2_6B^hTq}gnqOECbaqrMHe52mEXOR{O<-5XiFL|Wlpz$x3yBfrfj^WkZ zknbFW+r)*6P|*oci#Tn|UGrRn(Xe6#TD|lTx)N|pUL_sAkzr6gE%_kSjr|KlN9Ktm z@En47B6t^qcO!T&g7+c#VFW*d;Qa`G6u}1&d=SBpA^0;0{_Ng!lRus0{%#r{j* z4ud`s`6PLWM_vLvZjXR2M|hH-cqZP9@Ff2|px;O0`3U--g!a>*uSWRM<^gf}8tg9s zJP!H?{tQU@T!JOG8R5w~iF^E+KZDXbd>-^Kl8r3CM)rI2_9tTh0Kxx_@cX-eeRlgs z`e3VHJalT1kOd*^KTXsGzG)ZF&%V8QPMbZe!BwZ&1lF%Sg{T5VlO5xSieo61ESSa*4nZkcOl++I)Ll9$+)D|*^@L$3HC#2f*E&PXD z_?MCR<0C|lzbhmD<&3!&avjN6y1j((mw~?^@pWhL+X(+wYW)(Vy^8Q(?rY{5g7u%~ zUkCn?l>ZLs<4FEv{V5XvJ(Z@&5r>0r6jGvHtF5 q^eLp$CjUT2>`ng4{{C5WANfN;D|aMycsL_}y$JtxIIOx`@IL~yH=Z2; literal 0 Hc-jL100001 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 zc-rk(L2ukd6drF9k~Squ(gG3emY2jXX`eDkKz#m(}Sdoi-I^*HvR*<9Ho9f(${`L^Nue%+`{ z=w;@*{#*JbKX7gR^g*Sc>sZVS+2s7};yf`MQPmG7=Npz8>Svg~U19{S{Oq4~HCml>|P;Wwgv*w0hC_HX}d?a>XP4P%vgQLtec+Ihz&l-rp!VwWQl z|59E(oOR}Iz!%4JBKR!YhOsV3ho%)+&8BagktsNfv`8r56^^&+lU)OYe{sCEP#V@O zzu`rE=UBXtEL4PwL4aEL={nxJ?^%pSRVOr>rH9Z;$b0fCS>qcSCdI>&4+;LjrX0D=!9_z;2*Blr;ne-6Q)fBf9!PdC}#N#nxv zoD$Db(67WcNgU+NOMuJv80d10C-IRh@o|hN@$UnD0rBTE7=Iethe3ZGQcN5|S*vo3Kf@VuxQ+Dx1Htdc`1Z~}cZzSS_+POtIVfJ?}3(U5>b z#9yf>2*3n)APy)sLM4$mB0-~;2<4C$-bxtm4sZoA4DN^G6%;A})>ntrb;%uAe?qFg(8hkW zjeQyMUmhW<|2-N0uVk#Xkn2di((Pr0zYP2Zg|9b*-$nR0Q~67f_8P)}xxbZX1oA)4 ze-Ze{GU_gYJ(d-JslP=0e+c@UHu3uwvHx6aJ+H9!{{gZ8O6x3s*O2&K&4}MXM*M!p z)=$fJIL&hdx^$)ObDiyEpm6drF9k~SquLV-Y_H4+jnu%q2%QE5b?RNE3qN~%B=5e~sP_B3nOYcIAp zG(w0If`}h+<(3N)H>#eHP}N8|wCVu~afJg&h=>bCh)M`hnejfyvyNYOBYNzUW}oNt zy!qZdzj-tJ?zy=abBaP@QOFcYdWmfHC(qOH`zU#sbn~a9ymj$5bAFM0IP=Z(YuaD0 z{IGFqKzaJ#*RK7!`HVczj`&&Bu3s0rxTS6U93jiwd$FBncX^w1AWEs`S-RtSb={m$ zHRd?pv+7%(?^tU2ur$uGP38t{a&Bf}ju?%w;`x(v4buqJvrL^ge6wP!FE|3A7OO@5 zY1<8%Lrt$XMTo`f%(a3^&XyN!d4sGmzh^EMo&JI1=#2oGRCyZPf&LPxGt56=H} z?eD8X>-t6JhW@&)AI$#t``=yJ}2QTXs})jjTNp#zo{$nlk0_yuDT7n(y$#XZ(D?NJA;PoQb?j- z%BzQ6WzIUhv0Xca*P^fM)p&O3n!efWdX^Cyg0o1Agz{ZsyB9sOYoPNtw!0d{hBeb` zxFO#;CLa?QDni91KrQ@qY`5yUCZl1+4)kW}A#^3+BYBmq@j?KL;$g`Lp<(V{Sh_M# z9D(N$yc@xL5WE+`47$>&Ev|Ax$SJMuHh z+d=7IYhFA|YLbuzA?!b0)C9h17thbWw0KURJ*&f2r`Q5EuRMjQ0z~CUhfBzA(TD+w zh(A(M5P%8pKpc>2giI3Ohy;yXB6OWo#Ph?6FI^nO3gV&ipsG}_;ww{JF+@a<@%GQ1 zroAnTps&gp7cXeNtb@X@q|R`=5~N&$qE3 zZDX$?{>Mj%?0-*&|H~QQTF7N2Ug`c4!mj~;LE`Jp;CB%ItyKOJq`!*rU+Qn=8G-yy z^REH_Sjzqe=wnFyWBnfD|1HoTw~5~;i2XZC>v@HJ|IZQo50uX0w~55>(~S5HWW?_Z z_WhJ>htoV)VMtfnKG)g)xzWacDYrlWHnRRNGS)wwvHqU`OY@KPbmsprfE5t?g*N$j rD`QR}l@9rbGJJ2bSN6Bh`u34M6f~_Xsl%fg@jHa@Uxve~w+;V)imIGr literal 0 Hc-jL100001 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 zc-rk(&2QX96d!LA@>QZ{DKro$h9c1dJKar|LnBfJWkWVnQU$6=0Vy($J=rz!$6|X+ zBZRnsL?u96;nWL=8x0)=z&A4asw&Mc%S20*Dt#fJ@!f7=lOZw z{NB8I^Jez_xy4s;jj^0y=W>EX}(*%fkpqwkHceyMyh z_|vKHjz0H8?MD9iDS4cm;%B9L?V8Y~?drupB4lmnZtP~Oxwb>P5T)#Rre=FyLo=t; zDzk0x1@#@zw@tM&B=xf`gSi2lUYuWEBziNfd;aud)6fI8!qg?*H|m!9k}UvgGAC-! zSZ>H{YIx2WLQK|Rt{F^owt`?QFmj&xj$X5j=`tswwkJb?YerQe9nJ`dgZIF#GWDq1+z-9JyzbWCOV`_vPR+KRY|6p5P_zq*|t@>4Z8_EWKEq zESA+1d|Ug>W_rL*cHfT%TTZC2a~=9EU60>fFJ!dlHtBlPvdw~J63Xp#8nO!^iGC@s z9@Zwax8RHAS|NNEZB5&ZM~9~28?B~i>Y*+;OSD8N-xZd-;gLN9jeoJ+S`ZsLhSzjM zzH)}Rnp;w04Bx5QV2rb*uSv!WS%$z z&mnj(g7+bKKY|Y;_%MPWLhuI>d<4M{BlswS=Mnq}fX}n1V45UkGXM}ce>KX z`|Oz%p02!;;L`&syphh^)P9JC!k9BD{K`;LKZJ~dj{{O$$Z3TCBKAKa)n4jgKi!6Pz@sIU~i2t`hf6^g-pCb0}DedPKw*Frt_8%$T#qSalzt1w_HzIT!k(@Y5QDv`{#NG`_+8<{KLINu_RAge?^ec` oLh4=ek7oGZX0PmTpSAXpJruNRPf~}+GvYUh@Lz_*s=ovOe?}yi?f?J) literal 0 Hc-jL100001 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 zc-rk(PiP!f7=M#LCQWMC#9E`lb|{J|x{uvtJv6u_C0Vn9q(n;~9>O@8dCiVHJG0Kr z)&?nF6b#fqC&61Uf}mg(4}ul~Ikb55E{H-gH!FHmsPD~wv-5U#zU&5j><4eZdB6Go zy>Gtvy|?d_R$lH?6cUj_&Xaf+)81(OJP*H5ktfIie>%ZOKOajM*U8qk-CxX4E}Z*d?G1<&u5ckhPC=6)x3(421WlO9MZ)Lc`uUAL~WIkn7e z+kHWO%k^wiEsaQWwq-EKXT_DJwH2Z_f{N=ER~m-ytBXus)jgwPsV~_ApeCz@^Lfh& zm`x40cAgNE)tO`ZMeZ#tyk$*tg?Tl7+cJs;nxnJXeD=bt3uX1v>Y7^j7^~F-RfN`X zY*#nMBbWCr*YQ~ zuBBf+y8idIe{Kn`X_uK3csrU#9tg$NKpxUVIyx;aEX=9XyrrF03-lbFQD<`b7jv_@ zf;!E&wa09x`|ND*a@60c1^O1}f!E}f=*e*dMz@^?-D+62nYBzpxt>k~b~Pa3FXi3C zsxo^A-dK(mz-uwrv}$A>riN!Ur>?07y6~B&c|!TFu$;>-X(?#@jpc0nkz&no8&1G? zj=^Q3Mn$MF0~`5$j5|Khff0kDYVl`KZo+2c{@Pl{|NoY^_h{@kwFf& z=EZ|ig9OYEVE<{NC-6U zz!ThoI3V>1*-3OG5^lKB*oE9LT43wo7b|FcTa_9Wh)4I7sAGsPbBd3D?>8x`s8Olb ze4#!o-MV{Qu8o$R#HK6@sC zCp+&f#Pmo4uP63PM|}fPusNT=zZ;4BhoDJ_aafuQI*0h*#r`KG=Br)wr@H8uk@%w{ zM2>$jCH~EnZ!PF1lCR`^1My!5|2fIuP>O#W@xPa-UxLiH5&u_5+x<*J{U`lj0sk`z z{X4)e;*?H*Od123j6+_A^Pttz2)x)lE05r@;8=}zi+Vbr=$m* z^m7YD`jh&7z3rbnUGz8l4)?#0tpD?r^-rX%|2M#r{wD`}i~o1Pa)|y~m-@SxVpCA1 nNB`p~vA5|fhwG<(`%oVmTDd>&!&52wJBIkb35V5C7ythO07sc? literal 0 Hc-jL100001 diff --git a/testsuite/module-playground/cache/mod-simple.ko b/testsuite/module-playground/cache/mod-simple.ko new file mode 100644 index 0000000000000000000000000000000000000000..2c5ffcfaa1d494738e21250e756f652b65eea67b GIT binary patch literal 3472 zc-rk&%}*0S6rYwVAc}xSF&^9)4{+#Y3z!I6tO2AX1*)V8M$NM94s>NdYIoMqV1iK( zc=Ke82V&xt{{T%e8qdc6!RXa^!~|#Bne4Lc*b+JNlDBW>*LffF=DnG&j^%E~V==%f z28Mw@^XY4gKhCi4DbN8DWOSNv6XEfx0=U@zV{ZHI%W3p+?$wp)&%JLlkFN&p{G^{k z_Qm)6p9-n1sx%D^*)B@w#`8I#dbsG6(>YI5U1=0alWJKj8qzhB0#HX*b)GS7j7+FG z)-cdf3E8@v29HqLQWp&^Jpg6cpG+lh+#bnFGn09#R7S`uVaalI#j{OE)#;F|cMZpO zCGa2g@c7(sDv3SMM2e|a91rh9f79CjK&7HAARCt}iUJOV=vH0BDwzlz(jo1i#z#hm zq#n}Jz0v?2gnd$g)36pDVeU{CKm|Q2^8OYl#3weWZS48}qggYW~_NBUhZyx9c zo~&KqPy-mbnANI6`(YP=mIu?z5+Kk% zK@;YbT z=Lt85V(|a-0B|XUhda5S#T4$?Qm7s{g=+#bo0+gaD~xV7?_@FZdg1t>!2e3PzC!20 zX;h&9Opvdz{!GLf2KArT(N_ifEwSkM!}EKB{H;aguQ?)rw!nWTw)k&Z2aH;R|Wfj+v4A&eE)3``(I~R*nfATvH0IHOcv