On 04/21/2017 03:27 PM, Julia Lawall wrote: > > > 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)?
Exactly. Kaspar _______________________________________________ Cocci mailing list [email protected] https://systeme.lip6.fr/mailman/listinfo/cocci
