Coccinelle archive on
 help / color / Atom feed
From: "Christoph Böhmwalder" <>
Subject: [Cocci] Does coccinelle support non-standard C?
Date: Wed, 22 May 2019 13:28:51 +0200
Message-ID: <> (raw)


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 

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?


Cocci mailing list

             reply index

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-22 11:28 Christoph Böhmwalder [this message]
2019-05-22 11:37 ` Julia Lawall
2019-05-22 11:39   ` Christoph Böhmwalder
2019-05-22 11:55     ` Julia Lawall
2019-05-22 11:57       ` Christoph Böhmwalder

Reply instructions:

You may reply publically to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \ \ \ \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Coccinelle archive on

Archives are clonable:
	git clone --mirror cocci/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 cocci cocci/ \
	public-inbox-index cocci

Newsgroup available over NNTP:

AGPL code for this site: git clone public-inbox