From d6a5560288005da768c418d34b92e811d8e30b8f Mon Sep 17 00:00:00 2001 From: Coccinelle Date: Sun, 3 Oct 2010 14:03:48 +0200 Subject: [PATCH] Release coccinelle-0.2.2 ** Language: - Added ToTestExpression to iso language, see standard.iso for an explanation - Added depends on to initialize and finalize script code ** Features: - Update Emacs mode (cocci.el) to support 'virtual' rules and fix other keywords sush as 'depends on', 'using', 'disable' - better treatment of != 0 in isos, communtativity for ==/!= for all constants - allow adding // comments and blank lines (even after cocci + code) - Add support for multiple -I options ** Bugfix: - correct interaction between virtual rules and included .cocci files - improvement in treatment of ! in isos, to avoid duplicating + code - improvement in treatment of metavars as isos, to avoid duplicating + code between toplevel and variable instantiation - test expression of smpl conditional, etc no longer assumed to have type int - correct + line numbers in the patch produced when using * - iso constant metavariable matches an identifier whose name is all capital letters, eg NULL - allow / at the end of the name of a directory (-dir) or patch prefix (-patch) - dropped space in + code after the binding of a type metavariable that is a pointer type - better handling of . or .. in -dir name - allow keywords and metavariable names in identifier constraints (not sure keywords is very useful, though) - no lubtype on arguments of && and || in SmPL - allow unknown as type for array indices in SmPL - support matching of static annotation on functions that are both static and inline - support ENOTDIR error in Common.lfile_exists, to allow for the case where an include file is in a subdirectory that exists but is an ordinary file, not a directory. - better management of unbound position variables that appear in constraints - cause python parser to skip over // comments, hoping that // is not meaningful inside python - require + on every line of a multiline comment - correct calculation of line numbers when there is script code - always annotate arguments of && || and ! as test expressions in C code. --- changes.txt | 3 ++- commitmsg | 49 ++++++++++++++++++++++++++++++++--- docs/manual/main_grammar.pdf | Bin 288802 -> 288803 bytes docs/manual/manual.pdf | Bin 368433 -> 368434 bytes docs/manual/options.pdf | Bin 96147 -> 95945 bytes globals/config.ml.in | 2 +- parsing_c/type_annoter_c.ml | 5 +++- test.ml | 22 ++++++++++++++++ tests/na.c | 13 ++++++++++ tests/na.cocci | 7 +++++ tests/na.res | 13 ++++++++++ 11 files changed, 108 insertions(+), 6 deletions(-) rewrite commitmsg (98%) create mode 100644 tests/na.c create mode 100644 tests/na.cocci create mode 100644 tests/na.res diff --git a/changes.txt b/changes.txt index 78afb2b..cd6ec9f 100644 --- a/changes.txt +++ b/changes.txt @@ -56,7 +56,8 @@ - cause python parser to skip over // comments, hoping that // is not meaningful inside python - require + on every line of a multiline comment -- correct caluation of line numbers when there is script code +- correct calculation of line numbers when there is script code +- always annotate arguments of && || and ! as test expressions in C code. * 0.2.1 ** Language: diff --git a/commitmsg b/commitmsg dissimilarity index 98% index b443914..c522439 100644 --- a/commitmsg +++ b/commitmsg @@ -1,3 +1,46 @@ -Release coccinelle-0.2.2-rc2 - -Release Candidate 2 for coccinelle-0.2.2 +Release coccinelle-0.2.2 + +** Language: + - Added ToTestExpression to iso language, see standard.iso for an + explanation + - Added depends on to initialize and finalize script code + +** Features: + - Update Emacs mode (cocci.el) to support 'virtual' rules and fix other + keywords sush as 'depends on', 'using', 'disable' + - better treatment of != 0 in isos, communtativity for ==/!= for all + constants + - allow adding // comments and blank lines (even after cocci + code) + - Add support for multiple -I options + +** Bugfix: + - correct interaction between virtual rules and included .cocci files + - improvement in treatment of ! in isos, to avoid duplicating + code + - improvement in treatment of metavars as isos, to avoid duplicating + code + between toplevel and variable instantiation + - test expression of smpl conditional, etc no longer assumed to have type + int + - correct + line numbers in the patch produced when using * + - iso constant metavariable matches an identifier whose name is all capital + letters, eg NULL + - allow / at the end of the name of a directory (-dir) or patch prefix + (-patch) + - dropped space in + code after the binding of a type metavariable that is + a pointer type + - better handling of . or .. in -dir name + - allow keywords and metavariable names in identifier constraints (not sure + keywords is very useful, though) + - no lubtype on arguments of && and || in SmPL + - allow unknown as type for array indices in SmPL + - support matching of static annotation on functions that are both static + and inline + - support ENOTDIR error in Common.lfile_exists, to allow for the case where + an include file is in a subdirectory that exists but is an ordinary file, + not a directory. + - better management of unbound position variables that appear in + constraints + - cause python parser to skip over // comments, hoping that // is not + meaningful inside python + - require + on every line of a multiline comment + - correct calculation of line numbers when there is script code + - always annotate arguments of && || and ! as test expressions in C code. diff --git a/docs/manual/main_grammar.pdf b/docs/manual/main_grammar.pdf index 3c125f7f3094a4cfcf3453e2ee04d9b0d42f27e7..b64df054cec95882ec9757b99e14b7e23ca20ed8 100644 GIT binary patch delta 23157 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 U&r5|+8$x}cP}QnUS~e~8e_9KlrT_o{ delta 23283 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 diff --git a/docs/manual/manual.pdf b/docs/manual/manual.pdf index 6813f6298d647c176a0bcc731f3f9cf58872957f..54b13f688ef4f6a79fc7f582c7a13fa1c1f16816 100644 GIT binary patch delta 24716 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 delta 28438 zcmai-d+cRbRmUyzGcZ`B3{#-hSSWo>3q7xW9;Fl*hC(aSjt~kB6egt*zz0%9sK(2~ zQm8H1(0H&RMoI*O^6(KMRjVanw8$TAFtIgN8qk;uDgq(!hxpm|cOU1h&rO_U(stc_ z&fa_N_57~2PyhJNlmF<>lRtg@aVNANxaYslS^Uy1UwYx^PkY?;-~HC(zJA_&zwoH* z|MzFpL$AL5Z~p$v*B^WQKmN=OfBUQ>|8&!xfBC1)v8!MHz_kzl>KmW-L)Sg$?Vr5j zzb|{nr>=PI6&F75rVreH-q|02`sW{h#_-fz-hR^?@4Ebf+duZT&!wCH?CvLA|H_Ac z`dJ5#KI(J7|CNKEyX0ku&c5c>7oYHq z?-xFE#l?Sj)pO5%%*Fry-E`NPAAQ14T>2;Py!FYyd*SKVocZKCo_Oibse&dM` z|MBm9`u#8d>es*WopWFFn>W4dEpPelPk!q^AM+0{x$l~rzVX^W|K(SF`3tpT2kM=D$Ak>C^YlIN?xxT9N;p_VcG5$p5U1HdXET&{OuF zeyGz=O=`vq&fuq7Kh)K6tsjEB$MIakrw<8}Eb&s7w|cz6Cu zbEToG$5YPQ8y;T|L!2%3MKQkqtX&I9Z9j~6$n+c`Ye`>~?0#)tA_=15VM;{}KLsfllF zhB}Qm=AU#hP2UXT{fFUWYd$tzTaSm&-T7QQ6ytUICvl`nT{qsHf6{?AO}0c$;+s_X1ss*Q&m%qhl`!d zC^^dO@=p@exyd(eQ7q)#j9;o<9Tdva3 zj8|4jB4--;QKfuh`8jd1%7XL#{FBbPs*7g4wB{#qv8phWx8^YYE^H1VO*`a=i)6N&RsU5G&KWWS5Qp563L7$5P(>IK#w0mbQ z0yp@nOMwm5F!Y@cq9__|p=gS*_M+%g85jhuO{-@YYexf-HO&tc+R*CZzAUxqzG}mw zi=uDJus~?3oAY9Uk7ILlVy5+BAhe;VH1SaOfisM&8!dWh1}$db=oWFuLtlo2i-YD2t}{xYVx~vsn3g9`5QjaZBr?Zz;;Ms5MDh_L`(L7s?VBGvDxn z7q*RG*hS@L+>j!x%c?9Qx5~P$#jUC?BdzF4Hk{9Y8|`Gp7~;UPB4C-X8jVO*7zeFR z@!ZS0^O4j;y%F@qewbC1O)+S9P1OW;F|HoMVxT2Y+;mdAvgy0Hz(tvgYO|X4Vp8dI zPjwTuq-0*xTB&TA`YKLbrlDhVOa5)li7aWOJ-S^Q17x)be62tUtmy$LzAlGr? z0a1sR`M+jA5?q*FLn(t)4rTNQd4ZOr0UNA|+X?#*?CT$)tfdRtorzPmRCo5jW`6+#n|Pj8 z)zwjGut&0HRYmj=In$MXUsKJjxM~o1Jv+!ORjF9nzDG|OnTXm>cqVI-m{zH>R3#W6=Sp?b+EY_%?WyT> zW+|;)>1<7D7(blXBo)KGD6oLmdriHMBn^f5glUz`wCf{YO!(9m-Z<&4Hi^n=lD6uk zig@0r?^W9rGnvU653v<@0UE?f;zUo<%EFN)D<*{2d5*qbc#>YhM%4~Jrq1zSh2Myi z)MaHY={IV;jd-gLg^F_5@6cmn5-l2=t|P&Gi(5k(?8kWik-fdeAORV$DseGGUGAV+ zsfNZ%MZ_xs9@0vwriuZl$GeVXW%VW3XeF~zGOYqF-A zaCkiaoUE+zfNIQi)DLKie=(^sKLSi6$_qS(CS|RQRPXcss;#m@RD_t(xtVgYN%C}g z2WZlTIsbje|<7|*1O5f|cmsy5peXp&ahLee>-;}jdaE$06 zu_K-o7n<5f0zl?T8s!mngX7#^%+?@5lp`hzP~-z`@FbnWFf>4B8Cp1|Bd|Y1k7CU* zNYPldxR9Owlb)CDhvXAyZyFjOr%JW#2Y9h{0L032ocetgoa$<~Ll(PU{*CNVA!Oa{ z5T}e(pY;4}kF+0Hto`&v=y8udp^s>_&!-1C)VOAKJX2i-64v?j$>-Cz3La_#K5vBl zNE7$-1aqmYeeYA~0c7?byF*kS8|i}trTbyP!Fj?ca{3%~Sd=mpf&1kh1`I9f%uSS1My7EOU+v&pF@!r$yj z(g>U-rO+g$O=&9vj8~53Pvt$vBgRn9vYG7Up(*faszT8`o<@l+v@XhYQ&lTIPJ|z# z8Clg5eh?f9KQswH)?LEiRIP;{qJ+O8kQ8Ss=MN1zVw4inS_wZi34cS3Gv4)rEc{W> z@j`;1ni}o~-Gipck+?BBa>6kjs-6YoTGFZH1x?U5@k5drbq+AGmI^QdHdm)Uv4iZe7;m|Z zHCa2l+6O~kp{;g}wWCWu80sUEoUUD=6;nIdvGd4J;&6#dSG1@a-gk34dq_16A92UP)=_3K3SG>X!2N?9jX(CHj37ke0x?q*O<*nLADU8>M9?WA ztb1jR0Bb93Wup9vYW(=&7iHfhj#H4-#v5u~kr@Od+IV*I8b_0XXk?>H+Eg*<_wZtj z6(;Hlo+LQ_EbmP#PzmU9USwD*M$;)>PPu(Us|MINZ7pM)yq^+}QZs0ZekePng(d;z z)+98^L`Ml=D%+cgh;&S_!Ez_-F}Qt@gb%h^@7H$CNzxD)C=I`^K&Esfiup8bxFhC~m6 z&J#zi1@^rS4Zwg57dWtv6C8NX!KYy?fK>G`(SU?zpk3zpVGO5C0b8`_(1+mH8f|QI z`^21S#Oj^k6za7r*N4iiD`+j)XXH5gBdgmI{Ex@Z%|<`+BuCS6omt&PD@%Dhu!{Y{ z99-Qjsq}$Us9rgY@nh%iow$&AqA9|fTXJnJ0(Fc6LBKAlYnxtfy(L`Q=hZ~%DWe35 zAWzD^d43|$k{6AlX)z=_QR#`PR@P?4rR;f#>Am9}MckIMX*^-Z#Kho!vg=Y^@>*8a*+3+JtOXfx(J677TC5b^5>dL%!k0;>4A!EOn?;DVu0iz zgfxNBAv2#CTCFIVR)D#{6>I`=TMOob9?027ZNO0f`;_EOTpc$`~^>1Rax()|CUtw;qQyxs_ zsYs%ue>GZEuq0V;8k@E`;<}BA*wZ_viA;+DhZU;ZVS*}VJ)Mm4jOkL4t)M?qcvDXajCq&*-#Cn(-n_VD+WO?YGxy_;`?8P1MKiY> zIjBud9NMali8jc2FosYNbt(8K-Vjbh=(Mf~Z8x$5io=iUNcsi2n%G|tays+_Da7qb zm7**lZwjM(yka!fJ;pX`N#_4{)d1RJ|BikR+NY!uG>EE5*C(S@0Dx2fvaf&SrV8!| z3BQ^zGnhaU9WpP(4%qx$kHyi4sh&xug|w+u;w`a?l(gGet%nDVpp8wS(on zubi;I0|xg%H)VD;5rZaH_i^q^Eyr7~Cen**qOY)x&JmhxYJG>}3RCr{uEdFRk>vEv z3Wk^jSyX{l-6vpIR?Jdl=P-xLGw`9Rx)JTqv#l&-1c3rMc%M#{)KsT6&?y?t%|JJA zJOmOegx&W-?5b_sDa3(4fYJ4bi)twcE@ed@c|D^8%KNS};m zEv*}S2u-cnJZo*vg~+H810d7-IJZF-cc3H-34IDGhS^l=KniIg1Us6u8cx%38QyoO z;B|5pa3}kSKPP$_SVC?f=FDK@=c7P#cMM z7MhZBLU9>=B6~%((6$P+j=v}e3-83Q$TvgV9P2vP%Bh-mhZm8|($yJHiyk6FNYEmL zL?`STEZrOlG%&`w=s*)#2QAd%auPsH7UM5El`ul_h1i=Qvy7uAsd4Lmj>!ViAdl-O z?r1;$;sOTCjxWq@y`rhbm}lE~B>6%|1m>V2!ts3z+OD)aQe_RqiH9@J_c_dd@OW{M za*gJ|=w{Aj`Cm&vr6anQ;|jTkqQy`P)wwssq48OQybxTH{LOIDrT#&bv_caqL3-~p z#{jq$76ZuL$0lUnM_Eq`q$MOg%s@R^K z8>E>nEQUfs^tN1SQvfZRXZw-)PbQ>0CpkNcC@spV5;(LfT1RNQL;+2~ zCA4laTg`GYB!qFt*)T*FW_^l+i3G8o!a8Ua&yEuBkZ8VVlcFP_bv3QHS0**ImoXzp=k z+n8hjvKX7jv&M;uB% zLUI+(ZXTM=11VVKOhz(235i+Y3<@vEmTrXG-u2DGR8o>=#+Fw7yk5 zoo`-FyuvDm0jrL<0Rt()XeX*jGcHu5vsr3YkcOs$bXn5dx)p|%Z~>47P2+_W0itk0 zlaDHa;$`Q+c*VhP|6*9?|CasqA&P|^HOI&WP~WKaB@mM2gPO7zGXn>f=g;m)zcmSo zLZtPDWT8fnz_=;kJQ;K;MUmxLO zcbtmOnz;6Csv;u+Xy8w@RcNUn)@2X8q3)OF%Q`XZg+>!oTp-EchPJj8=M= z51gqNIj@LB0^M*Lmwyz%W)jAVe!A(<}D{(H@ z?&8EG3vnY&1{cCOu(kcp2KK*k6||U1Xd24TaT0>sSXj%q{v$#LMoR_}C&p$@xt00P zz(%fu!mtwj+-M&;LwAA<5&?o-%8rhB;@5g1pF*l;7Gg)EOQ8u}s00n?u|SL75C=vs zPzBznP4caLe?jb`Mx`AiaZ##CG?b+Py2~zbe`+2y!+)|AS~B7a8=@W2r~yS9{i|_z zd2?~m0K8ITaOq(Yg$u)~ozV9zfrF+O*3`JC!j)wUnjo~?M7q+FZN5dNC{{vp;y6!F zmoL;+4SX>mN#G2bgVG~tA+F)GA;1@sYH~!`YEbf6uLKUEgE36pa9Pa9g#2q9eM_O= zfubfACJp4XNRdWVAH&548Cid^)KuA5BH*TqJM3YRV}Ms8CZxde$Z4TfJPl7a*%%IC?5-M z&&mVRs;Kar{$d#^N;-=565m^hHib4{p% zH|)<%$C6;0TB7~N=?Kf9JZ&dNsn?6{r|e(qA6`sXM?gGOWF|?{O={33<5g(bJj%gs zQ^6It=rvi)qR|{MU|44>T+yVSbQQ`-QO#GV4Nb8DOJ3!allTugS0cf!|8=CYIVLWm zc+n&S@#rW|OJ!-Yo(m@D4|rz80^1{1Y%$C6JfX?KkaS7kDOM}@r#rYlJKAc9GAf{Z zX?*bA8Lf#yOxvhgH20{=VS*>cR&MY-U0LDT%6r5F?d!nyQd|ZD72ZJ;h=SDZc%i*= z%YD!Bo*VWK9y6a%^caoMcqOHVCIppQeHzOO)(IwtCGs02*0K2^qmNQ!K5Hpc0amDG z0{E;lu}imh2BJbUU?tfZx`>rwL2Jj8-n)138RCBK4v6BBy;~GnkW(%T@QQ^@CD)IY zRFGr~|A8jI4q&W=75qWI0ij#P6BFHso3i*d*E@TfB7wAT91iEO)Z{EluNLBfOiR>WPQnxYdDyW9Jig8HE6|7-T z6fN-mi&cs`QE4<)FN9{H_J&~KAQ2t-#}L7_&d6XqP^~Xoq*R4%~;+9n*#KsT_r z05T<(_(Pb;x=Tm|%&R)djPFJ``_{-drF`=}yP>!d96(Ibh~nmeN461s*-`eI4hh+7 ze1ZT9J{KmPqVso>0qy6N&}6V^!B3Y*$45-5gaw)cQm&`@R4HAJ-+Vu(>iz79*lD&^ z%s?BgoMHaTWlTNtr(GhdK*!}OR+^qFeW5c+&kWD~hT*jMX0KEh_c)K{c$T7@!cux( z=N2fRDjn3a{Pe9#wdu_am=(`bkdNX--%A8n7{`ZN;zocog!+-Q$BJbBKAK_-@EcE3 zlL^I1_`H=CxD9Eys2@#tidA!~Xw-VTm6h>R+)-8l#xE3rj~<6$1#8X;#EcG_+PUbN zkvD{1}?#zfgfrjG@FU%b>!Hm#Bq8y5H^|sq` zjru{{biSGPD9DUev9PLVR$COX!fi^p)5Lgk<8M@etj_F}w3XOBaJ$+MvnsH*RXnr=!|3>a z8c5(}8fbfbA&{noaG(qn#^Fq2@WQ>g)fa@=|Azhfi(-D53zhMO#0zm^+5%$~nCo}4 zj`?fSQ!ZrwGf>~QrfU~4Fiy<>@nZV$@>$nEcvfE(X1gjoLd#tbaT1cB$bP^8X$jsb zMoqcu7!f{bDY|!PYc6c#KZyF4J-HN>__)CRdPNqC!R1J~c-*|If%;~}z;lsCqN`BsAb0X{m0?u=vAv&AfMYq+P#Rt&gw8#@}20$d`Y z#q5RIO%l_HMuAc^%9A1f%LRL}I)B18svT#+oXx+ctHr<3EVRLve+C z1~8r-<&=2_gAnFxoKY6&oRP|AC?U+T;9-@5*_?Wzpy5v90;#lWVmkbEB)OcZXEO-5 z^gk1U!!3HCfNkzcb88^J(8w6$^u^9h+d85j-G|U1(qKEj?|1f&zUl~N@a{;Fp4}d~ zI2|pU=kjm$#YYjA;YfX?=`T9%!vA;3D^9!Uq662y`S_dO{MI*J^O^&^o}$ZvGtPMK IWfvd#KjM$8O#lD@ diff --git a/docs/manual/options.pdf b/docs/manual/options.pdf index 0d1a4365ec471451374fcab09bfa5372390afbff..9eb276d386549137e1ac0bf6eb420c78b5a4c1db 100644 GIT binary patch delta 6560 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 delta 6800 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 BJ2L

(match unwrap_expr expr with CondExpr(e,_,_) -> propagate_test e - | _ -> () + | Binary(e1,Logical(AndLog),e2) + | Binary(e1,Logical(OrLog),e2) -> propagate_test e1; propagate_test e2 + | Unary(e1,Not) -> propagate_test e1 + | _ -> () ); k expr ); diff --git a/test.ml b/test.ml index 8ee1f16..6d67c2f 100644 --- a/test.ml +++ b/test.ml @@ -86,6 +86,28 @@ *) +(* + * Copyright 2005-2010, Ecole des Mines de Nantes, University of Copenhagen + * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix + * This file is part of Coccinelle. + * + * Coccinelle is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, according to version 2 of the License. + * + * Coccinelle is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Coccinelle. If not, see . + * + * The authors reserve the right to distribute this or future versions of + * Coccinelle under other licenses. + *) + + (* * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix diff --git a/tests/na.c b/tests/na.c new file mode 100644 index 0000000..bdbbe3c --- /dev/null +++ b/tests/na.c @@ -0,0 +1,13 @@ +#define FOO 10 + +void foo() +{ + int i; + + if (!i & FOO) return; + !i & -FOO; + !i & !FOO; + !i & 100; + !i & -100; + !i & !100; +} diff --git a/tests/na.cocci b/tests/na.cocci new file mode 100644 index 0000000..cc1544b --- /dev/null +++ b/tests/na.cocci @@ -0,0 +1,7 @@ +@r @ +expression E; +constant C; +@@ + +- !E & C ++ 12 diff --git a/tests/na.res b/tests/na.res new file mode 100644 index 0000000..7528e1b --- /dev/null +++ b/tests/na.res @@ -0,0 +1,13 @@ +#define FOO 10 + +void foo() +{ + int i; + + if (12) return; + 12; + !i & !FOO; + 12; + 12; + !i & !100; +} -- 2.20.1