[Cocci] new to cocci, help needed

Julia Lawall julia.lawall at lip6.fr
Fri Apr 21 15:27:10 CEST 2017



On Fri, 21 Apr 2017, Kaspar Schleiser wrote:

>
>
> On 04/21/2017 11:10 AM, Julia Lawall wrote:
> >
> >
> > On Fri, 21 Apr 2017, Kaspar Schleiser wrote:
> >
> >> Hello all,
> >>
> >> I'm just beginning to write my own semantic patches, and I'm having a
> >> little trouble getting the hang of it.
> >>
> >> Currently I'm trying to unify all calls to a function named "f" taking a
> >> pointer to a variable and the variable's size as arguments, which I want
> >> to deduce using sizeof:
> >>
> >> f(..., &var, sizeof(var))
> >>
> >>
> >> My initial approach looks similar to this:
> >>
> >> @@
> >> expression E1, E2;
> >> @@
> >>
> >> f(...,*E1,
> >> - E2,
> >> + sizeof(E1))
> >>
> >> ... but this doesn't find e.g., "f(a, b, &test, whatever);".
> >>
> >> What am I doing wrong?
> >
> > Your pattern has *E1, but you are hoping to match &E1.
> >
> > If you mean that E1 should be a random pointer-typed expression, then that
> > constraint should go in the metavariable list, eg
> >
> > expression *E1;
>
> That brings me one step further, but now I have "*&", e.g.,
>
> - f(a,b,&E,whatever)
> + f(a,b,&E,sizeof(*&E))

I think you would want sizeof(E)?

julia

>
> Is there a way to "dereference the type"?
>
> Kaspar
>


More information about the Cocci mailing list