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 > _______________________________________________ Cocci mailing list [email protected] https://systeme.lip6.fr/mailman/listinfo/cocci
