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