Re: [cocci] Adjusting attributes for variables with SmPL?

Julia Lawall <[email protected]> Thu, 28 May 2026 10:21:37 +0200 (CEST)
Newsgroups fr.inria.cocci
Message-ID <[email protected]>

On Thu, 28 May 2026, Pierrick Philippe wrote:

> On 5/28/26 09:48, Julia Lawall wrote:
> >
> > On Thu, 28 May 2026, Pierrick Philippe wrote:
> >
> >> On 5/27/26 13:11, Markus Elfring wrote:
> >>>> I haven't tried this, though.  Another more complex solution involves
> >>>> passing through python code.  You can get inspiration from
> >>>> demos/pythontococci.cocci.  You would want to set eg coccinelle.z to a
> >>>> string that additionally contains the desired string quotes.
> >>> Would you find a data processing approach (like the following) “appropriate”?
> >>>
> >>> @searching@
> >>> expression E1, E2;
> >>> identifier F, X;
> >>> initialiser I;
> >>> type T;
> >>> @@
> >>>  T F = I;
> >>>  ...
> >>>  memcmp(&F.X, E1, E2)
> >>>
> >>> @script:python generation@
> >>> f << searching.F;
> >>> x << searching.X;
> >>> content;
> >>> @@
> >>> coccinelle.content = cocci.make_ident("__attribute__((myattr(\"" + x + "\"))) " + f)
> > You don't have to put the whole thing in content.  Content could just make
> > the string, and then the replacement rule could have built the rest.
> I have tried it, and spatch was complaining for some reason.
> Though it might be to my lack of experience with SmPL.
> I can provide the output if needed.

Please provide the semantic patch used and the resulting output.

thanks,
julia

>
> Pierrick
>
> >
> > julia
> >
> >>> @replacement@
> >>> expression searching.E1, searching.E2;
> >>> identifier searching.F, searching.X, generation.content;
> >>> initialiser searching.I;
> >>> type searching.T;
> >>> @@
> >>>  T
> >>> -F
> >>> +content
> >>>  = I;
> >>>  ...
> >>>  memcmp(&F.X, E1, E2)
> >> This one is clearly working and the output is as expected, thanks.
> >> I tried writing one on my own but didn't manage to write a working
> >> semantic patch.
> >> Thanks a lot :)
> >>
> >> Pierrick
> >>
> >>> Regards,
> >>> Markus
> > >
>