coccinelle
From: Nicholas Mc Guire <hidden>
Date: 2017-03-14 08:26:08
On Tue, Mar 14, 2017 at 06:21:06PM +1100, Tobin C. Harding wrote:
quoted hunk ↗ jump to hunk
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;
....
quoted hunk ↗ jump to hunk
`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