[Cocci] Matching function pointer typedef

Julia Lawall julia.lawall at lip6.fr
Wed May 16 20:35:45 CEST 2018



On Wed, 16 May 2018, Jerome Glisse wrote:

> On Tue, May 15, 2018 at 05:26:59PM -0400, Jerome Glisse wrote:
> > On Tue, May 15, 2018 at 10:53:36PM +0200, Julia Lawall wrote:
> > >
> > >
> > > On Tue, 15 May 2018, Håkon Løvdal wrote:
> > >
> > > > It's been a while since I used coccinelle, but I think to remember that you must
> > > > (and in any case should) keep the non-changing parts outside of the
> > > > +/- lines, e.g.
> > > >
> > > > @@
> > > > @@
> > > >          typedef void (*toto_t)(int a, int b
> > > > +        , int c
> > > >          );
> > >
> > > I think that typedefs of function pointers just don't work.  It is looking
> > > for typedef type name;.  I can try to fix this.
> > >
> >
> > Above does not work either. The error is same roughly spatch complains
> > that it matches whole content ... I have a workaround, namely abusing
> > gcc which accept:
> >
> > typedef void toto_t(int a, int b);
> >
> > For function pointer typedef and then coccinelle on function declaration
> > do work. Still it would be nice if coccinelle can understand function
> > pointer typedef.
>
> Ok my work around does work that well, it seems gcc allow this abuse
> only for function parameter type, it can not be use as a type inside
> a structure and so it doesn't cover all cases i am dealing with.
>
> Is there a way to modify code using python inside coccinelle ? I have
> seen example that print thing inside coccinelle but i haven't not seen
> an example that use coccinelle to match something and then do changes
> to the code using python.
>
> I am guessing i can open the file and use the position information to
> do that but was wondering if there is already helper provided for that.

No, python code doesn't have access to the ast, which is an ocaml
structure.

julia

>
> Cheers,
> Jérôme
>


More information about the Cocci mailing list