On Tue, Mar 14, 2017 at 08:26:08AM +0000, Nicholas Mc Guire wrote: > On Tue, Mar 14, 2017 at 06:21:06PM +1100, Tobin C. Harding wrote: > > Attempting to do transform using Coccinelle > > > > if (foo != 0) { > > ... > > > > -> > > > > if (foo) { > > ... > > > > Coccinelle script attempt does not work > > > > @@ expression x; @@ > > ( > > - x != 0 > > + x > > ) > > I think you do not need the () here as you only are providing one semanntic patch > the only thing that was missing is the virtual rule - so using this simple spatch > file works for me > > <snip> > virtual patch > > @tonull@ > expression x; > @@ > > - x != 0 > + x > <snip> > > hofrat@debian01:~/git/linux-next$ spatch --sp-file x.cocci --dir kernel/ | more > init_defs_builtins: /usr/local/lib/coccinelle/standard.h > no inferred keywords > HANDLING: kernel/sched/cpudeadline.c > diff = > HANDLING: kernel/sched/swait.c > diff -u -p a/sched/cpudeadline.c b/sched/cpudeadline.c > --- a/sched/cpudeadline.c > +++ b/sched/cpudeadline.c > @@ -80,7 +80,7 @@ static void cpudl_heapify_up(struct cpud > int orig_cpu = cp->elements[idx].cpu; > u64 orig_dl = cp->elements[idx].dl; > > - if (idx == 0) > + if (!idx) > return; > .... > > > > > > `spatch --parse-cocci script.cocci` appears to pass. A similar script > > worked correctly > > > > @@ expression x; @@ > > ( > > - x == 0 > > + !x > > ) > > likewise > > <snip> > virtual patch > > @tontnull@ > expression x; > @@ > > - x == 0 > + !x > <snip> > > Using: spatch --version > spatch version 1.0.6-00033-g23cca0a compiled with OCaml version 4.0 > .0 > Flags passed to the configure script: [none] > Python scripting support: yes > Syntax of regular expresssions: PCRE > > > > > > I have read various papers and tutorials to no avail. I have tried > > various other versions also with no success. > > > > Any pointers most appreciated. > > > first you might want to read through the myriads of examples that > come with coccinelle in the kernel: > scripts/coccinelle/* > Documentation/dev-tools/coccinelle.rst > > as well as the documentation in coccinelle repository: > URL: https://github.com/coccinelle/coccinelle > > And for specific technologies like semantic patches it is best to signeup > to the coccinelle mailing list and send such questions to > Cocci@xxxxxxxxxxxxxxx > archive at: https://systeme.lip6.fr/mailman/listinfo/cocci > > thx! > hofrat thanks Hofrat, awesome. _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies