There is macro definition at: https://github.com/coccinelle/coccinelle/blob/master/standard.h#L656
#define D1(x) MACROSTATEMENT That may be related to this issue. Note the spatch message: init_defs_builtins: /usr/local/share/coccinelle/standard.h On Tue, Jan 15, 2013 at 2:43 PM, Peter Senna Tschudin <[email protected]> wrote: > Hi Håkon Løvdal, > > I do not know why, but the problem disappeared when I changed the "D1" name. > > $ more test.c test.cocci > :::::::::::::: > test.c > :::::::::::::: > static void foo(void *arg) > { > } > DD1(foo, 0, 0, 0, 0); > > static void bar(void *arg) > { > } > DD2(bar, 0, 0, 0, 0); > > :::::::::::::: > test.cocci > :::::::::::::: > @r@ > declarer name DD1; > declarer name DD2; > expression E1, E2, E3, E4, E5; > @@ > DD1(E1, E2, E3, E4, E5); > > @script:python@ > e1 << r.E1; > e2 << r.E2; > e3 << r.E3; > e4 << r.E4; > e5 << r.E5; > @@ > print "MATCH: 1: %s, 2: %s, 3: %s, 4: %s, 5: %s" % (e1, e2, e3, e4, e5) > > $ spatch /tmp/test.c /tmp/test.cocci > init_defs_builtins: /usr/local/share/coccinelle/standard.h > HANDLING: /tmp/test.c > MATCH: 1: foo, 2: 0, 3: 0, 4: 0, 5: 0 > > Can you reproduce this? > > []'s > > Peter > > On Tue, Jan 15, 2013 at 2:14 PM, Håkon Løvdal <[email protected]> wrote: >> Hi list. I started writing a script to be a grep for a declarer macro and >> print its arguments. For one of the source files however, it produced >> a false positive by printing arguments for another declarer macro as >> well. Investigating this, I found the following which I think is at >> least related, if not the same issue. >> >> With the following two identical D1 and D2 macros, coccinelle fails to >> handle D1. >> >> $ more declarer_test.c declarer_test-d2.cocci >> :::::::::::::: >> declarer_test.c >> :::::::::::::: >> >> static void foo(void *arg) >> { >> } >> D1(foo, 0, 0, 0, 0); >> >> static void bar(void *arg) >> { >> } >> D2(bar, 0, 0, 0, 0); >> >> :::::::::::::: >> declarer_test-d2.cocci >> :::::::::::::: >> @r@ >> declarer name D1; >> declarer name D2; >> expression E1, E2, E3, E4, E5; >> @@ >> D2(E1, E2, E3, E4, E5); >> >> @script:python@ >> e1 << r.E1; >> e2 << r.E2; >> e3 << r.E3; >> e4 << r.E4; >> e5 << r.E5; >> @@ >> print "MATCH: 1: %s, 2: %s, 3: %s, 4: %s, 5: %s" % (e1, e2, e3, e4, e5) >> >> $ spatch --sp-file declarer_test-d2.cocci declarer_test.c >> init_defs_builtins: /usr/share/coccinelle/standard.h >> HANDLING: declarer_test.c >> MATCH: 1: bar, 2: 0, 3: 0, 4: 0, 5: 0 >> $ diff declarer_test-d* >> 6c6 >> < D1(E1, E2, E3, E4, E5); >> --- >>> D2(E1, E2, E3, E4, E5); >> $ spatch --sp-file declarer_test-d1.cocci declarer_test.c >> init_defs_builtins: /usr/share/coccinelle/standard.h >> HANDLING: declarer_test.c >> $ >> >> >> So when trying to print D2 it succeeds, but it fails for D1. >> Am I doing something wrong here? >> >> BR Håkon Løvdal >> _______________________________________________ >> Cocci mailing list >> [email protected] >> https://systeme.lip6.fr/mailman/listinfo/cocci > > > > -- > Peter -- Peter _______________________________________________ Cocci mailing list [email protected] https://systeme.lip6.fr/mailman/listinfo/cocci
