* [Cocci] Changing function pointer typedef
@ 2019-03-08 18:19 Jerome Glisse
2019-03-08 18:57 ` Julia Lawall
0 siblings, 1 reply; 6+ messages in thread
From: Jerome Glisse @ 2019-03-08 18:19 UTC (permalink / raw)
To: cocci
Coccinelle seems to have issue with function pointer. For instance
if i want to add a new argument to a function pointer typdef i need
to replace the whole typedef as one line. For instance:
test.c:
typedef int (*filler_t)(void *, struct page *);
test.spatch:
@@
type T1, T2;
@@
-typedef int (*filler_t)(T1, T2);
+typedef int (*filler_t)(T1, struct address_space *, T2);
Anything else will not work and also if the function pointer typedef
spread accross multiple line then the above does not work, in fact
i have not found a work around for that case.
I am missing some syntax that make this work with coccinelle ?
Cheers,
Jérôme
_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Cocci] Changing function pointer typedef
2019-03-08 18:19 [Cocci] Changing function pointer typedef Jerome Glisse
@ 2019-03-08 18:57 ` Julia Lawall
2019-03-08 19:11 ` Jerome Glisse
0 siblings, 1 reply; 6+ messages in thread
From: Julia Lawall @ 2019-03-08 18:57 UTC (permalink / raw)
To: Jerome Glisse; +Cc: cocci
On Fri, 8 Mar 2019, Jerome Glisse wrote:
> Coccinelle seems to have issue with function pointer. For instance
> if i want to add a new argument to a function pointer typdef i need
> to replace the whole typedef as one line. For instance:
>
> test.c:
> typedef int (*filler_t)(void *, struct page *);
>
> test.spatch:
> @@
> type T1, T2;
> @@
> -typedef int (*filler_t)(T1, T2);
> +typedef int (*filler_t)(T1, struct address_space *, T2);
>
> Anything else will not work and also if the function pointer typedef
> spread accross multiple line then the above does not work, in fact
> i have not found a work around for that case.
>
> I am missing some syntax that make this work with coccinelle ?
Thanks for the report. Is the error you got something like:
error in collection of - tokens: line 4 less than line 6
I will have to look into it.
julia
_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Cocci] Changing function pointer typedef
2019-03-08 18:57 ` Julia Lawall
@ 2019-03-08 19:11 ` Jerome Glisse
2019-03-08 19:23 ` Julia Lawall
0 siblings, 1 reply; 6+ messages in thread
From: Jerome Glisse @ 2019-03-08 19:11 UTC (permalink / raw)
To: Julia Lawall; +Cc: cocci
On Fri, Mar 08, 2019 at 07:57:08PM +0100, Julia Lawall wrote:
>
>
> On Fri, 8 Mar 2019, Jerome Glisse wrote:
>
> > Coccinelle seems to have issue with function pointer. For instance
> > if i want to add a new argument to a function pointer typdef i need
> > to replace the whole typedef as one line. For instance:
> >
> > test.c:
> > typedef int (*filler_t)(void *, struct page *);
> >
> > test.spatch:
> > @@
> > type T1, T2;
> > @@
> > -typedef int (*filler_t)(T1, T2);
> > +typedef int (*filler_t)(T1, struct address_space *, T2);
> >
> > Anything else will not work and also if the function pointer typedef
> > spread accross multiple line then the above does not work, in fact
> > i have not found a work around for that case.
> >
> > I am missing some syntax that make this work with coccinelle ?
>
> Thanks for the report. Is the error you got something like:
>
> error in collection of - tokens: line 4 less than line 6
>
> I will have to look into it.
With:
@@
type T1, T2;
@@
typedef int (*filler_t)(T1,
+struct address_space *,
T2);
I get:
error in collection of - tokens: line 4 less than line 6
The error message depends on the semantic patch i tried several
variation hopping to find some syntax that would work but failed
so far.
In case of multiline typdef:
minus: parse error:
File "typedef-func.spatch", line 6, column 0, charpos = 101
around = '',
whole content =
test.c:
typedef int (*filler_t)(void *,
struct page *);
test.spatch
@@
type T1, T2;
@@
-typedef int (*filler_t)(T1,
+typedef int (*filler_t)(T1, struct address_space *,
_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Cocci] Changing function pointer typedef
2019-03-08 19:11 ` Jerome Glisse
@ 2019-03-08 19:23 ` Julia Lawall
2019-03-08 19:32 ` Jerome Glisse
0 siblings, 1 reply; 6+ messages in thread
From: Julia Lawall @ 2019-03-08 19:23 UTC (permalink / raw)
To: Jerome Glisse; +Cc: cocci
> test.spatch
> @@
> type T1, T2;
> @@
> -typedef int (*filler_t)(T1,
> +typedef int (*filler_t)(T1, struct address_space *,
If this is the whole rule, it is clear that it will not work. A semantic
patch rule has to e a complete syntactic unit. So something with an open
parenthesis and no corresponding close parenthesis will not be accepted.
julia
_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Cocci] Changing function pointer typedef
2019-03-08 19:23 ` Julia Lawall
@ 2019-03-08 19:32 ` Jerome Glisse
2019-03-17 18:43 ` Julia Lawall
0 siblings, 1 reply; 6+ messages in thread
From: Jerome Glisse @ 2019-03-08 19:32 UTC (permalink / raw)
To: Julia Lawall; +Cc: cocci
On Fri, Mar 08, 2019 at 08:23:48PM +0100, Julia Lawall wrote:
> > test.spatch
> > @@
> > type T1, T2;
> > @@
> > -typedef int (*filler_t)(T1,
> > +typedef int (*filler_t)(T1, struct address_space *,
>
> If this is the whole rule, it is clear that it will not work. A semantic
> patch rule has to e a complete syntactic unit. So something with an open
> parenthesis and no corresponding close parenthesis will not be accepted.
Yeah and adding "T2);" to the rule does not help either it error to
error in collection of - tokens: line 4 less than line 6
Any variation really do error in some way or another.
Cheers,
Jérôme
_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Cocci] Changing function pointer typedef
2019-03-08 19:32 ` Jerome Glisse
@ 2019-03-17 18:43 ` Julia Lawall
0 siblings, 0 replies; 6+ messages in thread
From: Julia Lawall @ 2019-03-17 18:43 UTC (permalink / raw)
To: Jerome Glisse; +Cc: cocci
On Fri, 8 Mar 2019, Jerome Glisse wrote:
> On Fri, Mar 08, 2019 at 08:23:48PM +0100, Julia Lawall wrote:
> > > test.spatch
> > > @@
> > > type T1, T2;
> > > @@
> > > -typedef int (*filler_t)(T1,
> > > +typedef int (*filler_t)(T1, struct address_space *,
> >
> > If this is the whole rule, it is clear that it will not work. A semantic
> > patch rule has to e a complete syntactic unit. So something with an open
> > parenthesis and no corresponding close parenthesis will not be accepted.
>
> Yeah and adding "T2);" to the rule does not help either it error to
> error in collection of - tokens: line 4 less than line 6
>
> Any variation really do error in some way or another.
This problem is fixed. Thanks for the report.
julia
_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2019-03-17 18:44 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-08 18:19 [Cocci] Changing function pointer typedef Jerome Glisse
2019-03-08 18:57 ` Julia Lawall
2019-03-08 19:11 ` Jerome Glisse
2019-03-08 19:23 ` Julia Lawall
2019-03-08 19:32 ` Jerome Glisse
2019-03-17 18:43 ` Julia Lawall
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).