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