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)) Is there a way to "dereference the type"? Kaspar _______________________________________________ Cocci mailing list [email protected] https://systeme.lip6.fr/mailman/listinfo/cocci
