From cc52a989a1bf39a2cfac4cd7d78cfb28ae04a292 Mon Sep 17 00:00:00 2001 From: Gavin Hayes Date: Fri, 23 Feb 2024 01:15:50 -0500 Subject: [PATCH] test/example: add testing constructors and destructors --- rust/examples/reactor-hello.rs | 11 +++++++++++ test/constructor-destructor.c | 11 +++++++++++ test/constructor-destructor.c.instr.wasm | Bin 0 -> 58922 bytes test/constructor-destructor.c.wasm | Bin 0 -> 26058 bytes test/reactor-hello.c | 8 ++++++++ test/reactor-hello.c.instr.wasm | Bin 40281 -> 40517 bytes test/reactor-hello.c.wasm | Bin 18122 -> 18268 bytes 7 files changed, 30 insertions(+) create mode 100644 test/constructor-destructor.c create mode 100644 test/constructor-destructor.c.instr.wasm create mode 100755 test/constructor-destructor.c.wasm diff --git a/rust/examples/reactor-hello.rs b/rust/examples/reactor-hello.rs index 3f20a40..ebb2795 100644 --- a/rust/examples/reactor-hello.rs +++ b/rust/examples/reactor-hello.rs @@ -49,5 +49,16 @@ pub async fn main() -> anyhow::Result<()> { f.call(&mut store, &[], &mut []).unwrap(); trace_ctx.shutdown().await; + // call __wasm_call_dtors + // Normally reactors don't emit __wasm_call_dtors, but + // reactor-hello.c.instr.wasm includes it as an example of specifying + // a cleanup function in a reactor. + { + let f = instance + .get_func(&mut store, "__wasm_call_dtors") + .expect("function exists"); + f.call(&mut store, &[], &mut []).unwrap(); + } + Ok(()) } diff --git a/test/constructor-destructor.c b/test/constructor-destructor.c new file mode 100644 index 0000000..12b9e80 --- /dev/null +++ b/test/constructor-destructor.c @@ -0,0 +1,11 @@ +#include + +__attribute__((constructor)) static void constructor(void) { + printf("constructor\n"); +} + +int main(void) {} + +__attribute__((destructor)) static void destructor(void) { + printf("destructor\n"); +} diff --git a/test/constructor-destructor.c.instr.wasm b/test/constructor-destructor.c.instr.wasm new file mode 100644 index 0000000000000000000000000000000000000000..6e7b9a08c9bff970ea9c205c494dd7e6ced56419 GIT binary patch literal 58922 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 literal 0 HcmV?d00001 diff --git a/test/reactor-hello.c b/test/reactor-hello.c index f5f053f..0159a48 100644 --- a/test/reactor-hello.c +++ b/test/reactor-hello.c @@ -1,4 +1,12 @@ #include #define EXPORT_AS(name) __attribute__((export_name(name))) +__attribute__((constructor)) static void constructor(void) { + printf("constructor\n"); +} + EXPORT_AS("hello") void hello(void) { printf("hello world\n"); } + +EXPORT_AS("__wasm_call_dtors") void __wasm_call_dtors(void) { + printf("real destructor\n"); +} diff --git a/test/reactor-hello.c.instr.wasm b/test/reactor-hello.c.instr.wasm index 4fb6fdacaf0ea96736bf6c27383ddb71ecb74fc6..4d8fc6875024099c0ba8fec8f9e588e6eb87e82d 100644 GIT binary patch delta 3665 zcmaKveQ*@z9mjW{eYv~r?d`L7d4atC783GC3`GTm(c#fyj2*2nq*ANo$je1zlU%%9 z0ue9?)q+%v$*NTe7Dd`YO#yeP%8Rd6)Dgs1t=cIo(AeD}3W6a1D7;MS@9!7;mkGi$(fuUuY8aM^WcaojqBMM4 z-tgXy{nb^X`zH}el?f39A_M|NkR^!-Qcx0wP?m;%xImGth+U$hD2Ry~L{qkTtE>gi zlhuwyM>5q%1TEgy*_Li=Y;U_YA)KS!lxS~H3bkfDz8v$4H#fGo$6M0LRJSlIlqCvG z)aJ|C(cCFvkz_qIN~*#F3sISd@V}x}i=>|{WI_cwQfLVvEV4upbwSV=UO0ywv5$+> z+QL)@0ul{d3JX&O6iWs<-_UAAwV%Bcv;-#LWr9UOv?Nq~kNV~BRolhnB3epiHc$XT z2+>lDvQoR9oT=B*RHV8UU^*rcz)-|Z*OEZeF}$JSvCIUJ=a7j))^E8Q8`-#a zL+LadS+@O~V7+M|3qT%(K%<70%M4o!&Bg0430-aE;W^h?p?Ox2KOokQ*^vwMxwnt|M#tq_E2MZwB~EH)9k z+0sxRhHwSRwscnHri&F9VZ}xEeq)Jv+Ag6L;)GL2w~1KjDRZ__f+7iUinIg^EwRsy zKB`;Diom3nRmv=TJbIT_?W$1zhL6oU==!`FNraZiSUJ-x`gwd}rO% zdWFtF`n3oH1O^G6!DiThFJ>P61%b5$)^T`Y35Od9+)ZGJ!@DQpy#($fa6gA1O~Q=? zMhR@=39F|%fK26{m0?&HT>9yXJ z#EgJD3VSlx9+LLWO^-@TJf71vgOl>+;tqe68Xa=7AWqoW2Dovpw@WG&T#?X_FN>tFF3} zSNep8L7fb@^RD4RcWZ8?d$i1ymS4kzzM{da8tnJ^zph!}mHMUz2Q)b7^F@n?y|C}O zVGsNE#};$@zj^i_`|`SaZhu09lNy}LaObu96!CnX3Zu`iaAqKvFZrPtc6S)|h2gny zCe3Y2l5U6DSP-8GZ)C7j^^@Ja+Amz2)4t7@*ZtVDIU9yS9oFa>n}(m>nO}~r9MVxf ztg{e4lge2+Rl>5yCLHnld$`>$9h1z{Z~5tM~5>$uaB?tdbcKmHtQpq zEXU*AW;o(zITFbfeep7GGa7+S5qQ|=FD>I)Zi&ES5!mW;+BoFdk43NvyL|hdjof~( zXTQ&vn@!w)e*|8O!0Q?A3^$2<#AnP_+?12!A*h|i_gl`(gcV+NXUH&~QU(jIQT(9=5x{N8}4ef`l^Uexmj7Pa3`X3dSf zsDp;vv$uTt_>H`%4-ELwfWKt8({$6vGCoo->lop+ouX*>70uN4d6L@=ny%d%GgI6Z zUEJ<26E>J|x6coB@e$Z2+-t&pJ}#qGl-~P64ZvU=l|DG>D+|BKem~hmDai2G&dG?=} zaLj~Heg0&c_xhxX&H1-)e?c;YgoSBx#~*8eIl1b1yoM5H&+2n z!)M6RAUjb&r{Pv-8g7e3ce|O-relQZY`PO(ZA6Wkc%_8f44KZf!fd8pHFVLmEEHt1 zEZkb-K3l_uhW`~!JDyDhHW1VXV)p8xIYrIM&hB)ory2L@Swbq&*bXfTA2?49jj7Jk z`_~XMP+%W@pjupE>klTyQG4}+b=po!VQmJIBB(S_Wl}>gvfw~;q+0kSvt*OL{u4zhZ zS5LZoy3*K`Or=YMy{)|dGL3)6o0F-;j6heiE8dt2+*mGkHMUgP`J?$&mF}BXb5~!L z``MjHSF0GSJ<&PS<2R*h0=Vu(aE{$DS}?CRyUm+rN1`(w$G~y#g=`l5AN|hjnLRZ6 G#{U4hwRl(n delta 3446 zcmZ9PdvMg&6~?8z(!R7>U9I2i*O6`f3`t7DtDdANEmM+dLlYp-5G>aA+L+qj&FNORM?DDwzEE85%~V}|?uETggl7sBb80T%hUZ9rv2Tg9RdG)~Q7 z%298g!T>W~VSyDHMo@`-6zbJ6DiZye0|YMYS9sO0Z$MAuBFw3m!r%oTE>f^sq+dgK z1%b#|EGQmT&~Lba?bBs0Uy#hjSW-Au(#LW?By=HHAO{Kcg8%^t;-C^%gZfTRA=gfG zUrI8$2B4@2%Sv38jXwSz)`Bm=RG3boKHGCt3=p9kyf~m_sR4bAcPcSh?R`l|BixJA z6j@Ev2ff8oh@6|HL>wY4q!;@p%OYVO$O0b-SX44qQD5R4P1g7NUXU`#HPe~L8H!iU zFu)&Rg)GwqXDJiaEMv5=jFrj=7zZjmgUbjk(+2{}EDFae$=q8cK~ zlDfq(S!l)?CUJ)KUMZvCMu~y|nb9jQaEXk1zC>Zk4xBF;g>IDSx1^HcmojE6KJY!p zGKwGk>M`GJMIiD31j)I2ijMGohg!{_OXA4}jWLauOdox@cotTMRA%UE1M=o>t|$>Rc(78upvo4|(3 z3Ejl20NZ(7Zt`+{-H4y2nW66CRTAG`ekfP{&WIL^ALQW>4~HGz_C$?kevF6Xwz>X~ zC)zFXpLqB)51%>W<|mI>H7}bruRArL8cAyoS~YJv@{J>D&AU9@vnroI2h zO?^IP=S5Ik^`@6o$y zYN7FU^+gfk28HHrLm_NQ?Fe=BNh+d(_)6(xUwW924NU z!&8&0tx-P};FJKT9scp8F01T0v+PC3K02A&|I@O+;>i0aQ~MhN3<_}5=EnFb31s3okDX4i(7Ge#4Q!pi%d4 zMfgsHyAD6AEwG|n93(c&f_9VIOls2=G@D!#v}ZmtliG9#VPg<}?eHH&XqTIVuq6mv z9lj#6%Cg@TBpK{;>>sVA_J=I{!;XAqEww)$gg*x1gw2g$9ZPrkuGwa%WVfkAe`0-C z-jc{pE|KgmJEFA@H+YSMZ$;->8@XPB-%7B_;hhch)69+BB@y%8k{Y5LsRtXMvh;=o zzn5UYqpxYCLmiRGP{*BS9yHRSPD^HHXB@dUiw^a<1YbyS!RE%_W?kXPE%jK-8amre zOzghJ_H47`)NYY%+AWst;ZDY>-EtXL$gtAk&%H{wK$l^y4C@^J?yK~JvQZ|}ZIx~N z>IAjlY1!{`qkA`bS)sJ!_{p4 zUkfHm<_)ltNM^S?MB= z862)u0&1ncZPn8mJ|gg`KFkZknRLXconGNmNcXHBWlUea({1?P=|t#KSbzJyDt4N_ z|GgNyKrdTALHLU2S|cq{wwHg@n71CY9rS_O?~W&$T2l>zq-k>^$tJC#UaM=4C8L4# zhoGT8nTn*e#%M|mKBUQL^cTVZSvDupl!{8cwHk|>mQ2+*#i*I=wl21Z96YDPRHu10 zttlBvrRJs+W3nLDmeMR~hDXzy%?g zJq6~OKpLBP91sgs4e6h64BSN9s#+nq#ev8tJySIjXhBQd+Vt9w)1#^=0PY zle+laa`QbIO;xx_1I^LaN{i1*RC&mGD*+=O2{*NpL~`R{Ce!3mD-{G1&pc4`s`pa80hat$D=N`2{{R8_h<_8FYmK6Abh zQXcF^v`T+Kz)}K)QVJL-5)ZA_mp-+kQYC~`RJBN`&{7ms@lvSzLM!?+w2qX7gjtPqLlv>pP`#APl3MMauM_`)(tNoFW!X4BOTX}S(0s&(XXzDh3}l

R{p^51vXDoXw!^G@q;3g`vsCtN z1pHgR^^Ib|v(z8P$17|7{Z;^|!D*1nz+))_bt(E0TAbj8(3(auK>b7LTIbnXagQQB zl1uW8v+BO>UI9Q7E(686a1iuM;dKr;P9@~z1bLo1duAL}4wzvl{Vmv1>srIIyiz-3 z#=UE5f$fU}A5?rQ#uN(#H_+SVe zy9Xn&howloTq0v(7&P1|?MVLFyfx)}<}E3H$j*#-qH=ZcyfyH#xeCE=KW_f60YSLi zLXcdt2_+AmTR+s1&~gPspGd&n?m)U4&qzu2k)d*B{RK;9*YGqUr2zfs=@{NgVbR`c7sU482gGj4>*<`4a=6*sl2%elC6Unzs?bt1 zq>=?AZYWz-!?~npEvV|at1fI(PaEnIo<+M|MMWtX$+T8w6D`cUquI4!X6vOkMM)Rp zhB4&aw40Z@`ESyYQoUt zxkA7O?NfDK)7!0+3Ej}LqaBt>=x=tklTYdD&U_c2%1;;tiI0zJx)HSPNL4!$5~^P% zq3LS3HLvBBxV|;ql#eHS=wF-s!Cv#VPUNQ|=C`04Q46HXsJT97-=;r7*KI!VFV&h~ A(f|Me delta 1740 zcmZuxZ%kWN6o2>9fArB&Xrc5kucd`HO(`&fo707tA@N^`$u#;!p9NmGLQBi*gAO%o z!xus4hPy*2FoikhV)n%~k;KGo$%rwFi6kmcvk!cb8BL6f9~?18J@-~tLio`0&OPV+ ze&=`2eXn;;qg!vGnN8drc>9-!^o3;&uNNvv3-Yw;DvgK}5wEE>)mV(5X9Aex{T%KV zxgfr=P$+PZnK+K)MX2e*H^?*+(Cg$UkuzKYI~P3<*wiJaFx3jVt8Cirvu z!_U7Io=_ zt>*J2YUpq?oCy{uAhD1i6${rZdg*MUoz8aBumK9CN&(H0Lgi7kK)$Vf!giVJ@nSJg zR{(urCRpb?q|-Qw7Rib+2kN7|2Q3!+_)Uani=8G9_AOBq^w9*dfr-anRE2n)Dm|?;LNjx*n6Pvw*BC497G2lezZ`Wc0}}$T=7nV{iKyj z0a~!9e0H#xeVx1Fk)|I!%jKpKjw`ja2qwWY%)0vhQGh<{Uk2!3elPg0zyae$3aZlZ z;wpJ5Fl8)pfNl@*+FVcr8*uKJ<^i!ya52`S&7EbCs|*6@kImt7%3eJsS<1q4Xbs~-;+*wbGSYe$HVm$J<)cIJ|xey_d}0jyAS%Ux3_@(r@h{K6aJex zacv%~`2u?n%vb6=F`~u|)smEpWfM|- zP#Q?4vvQ@i9EcBQ)tD+BlU3usax^Q;!~70dPD!Y8m6oARCP~VwgNbyBY@d!L$EzQN zb9q{AHb_z;8&lPZ8XyKhdQ6pAX{}z8lC*=RYMY6ktd)|arddTDxN+v4sMnPon|5$4 zm6~XPOmaX~Vk23*A*(8~qNEjvJ~yDK=~TZ{mm7fRBmFLIT#-*?+}e0%OwD?