All of lore.kernel.org
 help / color / mirror / Atom feed
* coccinelle
@ 2017-03-14  7:21 Tobin C. Harding
  2017-03-14  7:52 ` coccinelle Peter Senna Tschudin
  2017-03-14  8:26 ` coccinelle Nicholas Mc Guire
  0 siblings, 2 replies; 5+ messages in thread
From: Tobin C. Harding @ 2017-03-14  7:21 UTC (permalink / raw)
  To: kernelnewbies

Attempting to do transform using Coccinelle

if (foo != 0) {
   ...

->

if (foo) {
   ...

Coccinelle script attempt does not work

@@ expression x; @@
(
- x != 0
+ x
)

`spatch --parse-cocci script.cocci` appears to pass. A similar script
worked correctly

@@ expression x; @@
(
- x == 0
+ !x
)

I have read various papers and tutorials to no avail. I have tried
various other versions also with no success.

Any pointers most appreciated.

thanks,
Tobin.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* coccinelle
  2017-03-14  7:21 coccinelle Tobin C. Harding
@ 2017-03-14  7:52 ` Peter Senna Tschudin
  2017-03-14 11:01   ` coccinelle Tobin C. Harding
  2017-03-14  8:26 ` coccinelle Nicholas Mc Guire
  1 sibling, 1 reply; 5+ messages in thread
From: Peter Senna Tschudin @ 2017-03-14  7:52 UTC (permalink / raw)
  To: kernelnewbies

I guess this is off topic on this list. There is an specific
Coccinelle mailing list:

https://systeme.lip6.fr/mailman/listinfo/cocci




On Tue, Mar 14, 2017 at 8:21 AM, Tobin C. Harding <me@tobin.cc> wrote:
> Attempting to do transform using Coccinelle
>
> if (foo != 0) {
>    ...
>
> ->
>
> if (foo) {
>    ...
>
> Coccinelle script attempt does not work
>
> @@ expression x; @@
> (
> - x != 0
> + x
> )
>
> `spatch --parse-cocci script.cocci` appears to pass. A similar script
> worked correctly
>
> @@ expression x; @@
> (
> - x == 0
> + !x
> )
>
> I have read various papers and tutorials to no avail. I have tried
> various other versions also with no success.
>
> Any pointers most appreciated.
>
> thanks,
> Tobin.
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies



-- 
Peter

^ permalink raw reply	[flat|nested] 5+ messages in thread

* coccinelle
  2017-03-14  7:21 coccinelle Tobin C. Harding
  2017-03-14  7:52 ` coccinelle Peter Senna Tschudin
@ 2017-03-14  8:26 ` Nicholas Mc Guire
  2017-03-14 11:00   ` coccinelle Tobin C. Harding
  1 sibling, 1 reply; 5+ messages in thread
From: Nicholas Mc Guire @ 2017-03-14  8:26 UTC (permalink / raw)
  To: kernelnewbies

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 at 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 at systeme.lip6.fr
archive at: https://systeme.lip6.fr/mailman/listinfo/cocci

thx!
hofrat

^ permalink raw reply	[flat|nested] 5+ messages in thread

* coccinelle
  2017-03-14  8:26 ` coccinelle Nicholas Mc Guire
@ 2017-03-14 11:00   ` Tobin C. Harding
  0 siblings, 0 replies; 5+ messages in thread
From: Tobin C. Harding @ 2017-03-14 11:00 UTC (permalink / raw)
  To: kernelnewbies

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 at 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 at systeme.lip6.fr
> archive at: https://systeme.lip6.fr/mailman/listinfo/cocci
> 
> thx!
> hofrat

thanks Hofrat, awesome.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* coccinelle
  2017-03-14  7:52 ` coccinelle Peter Senna Tschudin
@ 2017-03-14 11:01   ` Tobin C. Harding
  0 siblings, 0 replies; 5+ messages in thread
From: Tobin C. Harding @ 2017-03-14 11:01 UTC (permalink / raw)
  To: kernelnewbies

On Tue, Mar 14, 2017 at 08:52:02AM +0100, Peter Senna Tschudin wrote:
> I guess this is off topic on this list. There is an specific
> Coccinelle mailing list:
> 
> https://systeme.lip6.fr/mailman/listinfo/cocci

Noted, thank you.

Tobin.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2017-03-14 11:01 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-14  7:21 coccinelle Tobin C. Harding
2017-03-14  7:52 ` coccinelle Peter Senna Tschudin
2017-03-14 11:01   ` coccinelle Tobin C. Harding
2017-03-14  8:26 ` coccinelle Nicholas Mc Guire
2017-03-14 11:00   ` coccinelle Tobin C. Harding

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.