Hi,

Consider the following snippet of C:


#define f() ({ puts("hello"); 0; })
int main()
{
    printf("%d\n", f());
}


It uses an expression statement in the definition of `f`, which is a gcc extension.

Now let's try to write a semantic patch to generate something like this:


@@
@@
- cocci_replace_this()
+ ({ puts("hello"); 0; })


With the C code as:


#define f() cocci_replace_this()
int main()
{
    printf("%d\n", f());
}


This prompts the following error message from spatch:


$ spatch --sp-file test.cocci test.c
init_defs_builtins: /usr/lib/coccinelle/standard.h
32 33
Fatal error: exception Failure("plus: parse error: \n = File \"test.cocci\", line 4, column 3, charpos = 32\n around = '{', whole content = + ({ puts(\"hello\"); 0; })\n")


Now here's my question: this obviously implies that coccinelle doesn't support expression statements (or any other non-standard C for that matter). Can I still somehow tell spatch to just replace it with this string of text instead of trying to parse it as C?

Thanks.

--
Regards,
Christoph
_______________________________________________
Cocci mailing list
[email protected]
https://systeme.lip6.fr/mailman/listinfo/cocci

Reply via email to