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

Pierrick Philippe <[email protected]> Wed, 27 May 2026 11:35:55 +0200
Newsgroups fr.inria.cocci
Message-ID <[email protected]>
On 5/27/26 11:32, Julia Lawall wrote:
>
> On Wed, 27 May 2026, Markus Elfring wrote:
>
>>>> I think that the problem is that { ... } is not actually an expression in
>>>> C.  It's a strange thing that can only exist as part of a declaration.
>> See also:
>> https://en.cppreference.com/c/language/initialization
>> https://gitlab.inria.fr/coccinelle/coccinelle/-/blob/1bff7651118fc65c269dd8dba7f7d4a30fbc72c7/docs/manual/cocci_syntax.tex#L237-238
>>
>>
>>>> But you don't want to change it, so you don't need a metavariable for it.
>>>>
>>>> Just write:
>>>>
>>>> - T F =
>>>> + T __attribute__((myattr(("X")))) F =
>>>>   { ... };
>>> It does work indeed, thanks a lot!
>> @addition@
>> expression E1, E2;
>> identifier F, X;
>> type T;
>> @@
>>  T
>> +__attribute__((myattr("X")))
>>  F = { ... };
>>  ...
>>  memcmp(&F.X, E1, E2)
>>
>>
>>> Although the metavariable X is not interpreted in the `+` context,
>> I suggest to reconsider such a view once more.
>> Please take another look at implementation details.
>>
>>
>>> could it be due to the attribute or unrelated?
>> Would you like to adjust a string literal according to a variable access?
> The string is supposed to be constructed from the field referenced in the
> memcmp call.

Exactly.

Pierrick

>
> julia