Jump to content

Coccinelle (software)

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Intgr (talk | contribs) at 23:57, 28 February 2016 (Revert, Coccinelle the tool is named after French language. Italian is irrelevant trivia/WP:LEADCLUTTER. Undid revision 707405454 by Nemo bis (talk)). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Coccinelle
Stable release
1.0.0-rc20 / February 15, 2014; 10 years ago (2014-02-15)
Repository
Written inOCaml and Python
TypeStatic program analysis
LicenseGNU GPL v2
Websitecoccinelle.lip6.fr

Coccinelle (French for ladybug) is a tool to match and transform the source code of programs written in the C programming language. Coccinelle was initially used to aid the evolution of Linux kernel, providing support for changes to library application programming interfaces (APIs) such as renaming a function, adding a function argument whose value is somehow context-dependent, and reorganizing a data structure. The tool is freely available under an open-source license.

The source code to be matched or replaced is specified using a pattern very similar to C, called Semantic Patch Language.[1][2]

Support for Coccinelle is provided by IRILL. Funding for the development has been provided by the Agence Nationale de la Recherche (France), the Danish Research Council for Technology and Production Sciences, and INRIA.

Example

@@
expression lock, flags;
expression urb;
@@

 spin_lock_irqsave(lock, flags);
 <...
- usb_submit_urb(urb)
+ usb_submit_urb(urb, GFP_ATOMIC)
 ...>
 spin_unlock_irqrestore(lock, flags);

@@
expression urb;
@@

- usb_submit_urb(urb)
+ usb_submit_urb(urb, GFP_KERNEL)

References

  1. ^ Valerie Henson (2009-01-20). "Semantic patching with Coccinelle". Linux Weekly News. Retrieved 2011-04-25.
  2. ^ Wolfram Sang (2010-03-30). "Evolutionary development of a semantic patch using Coccinelle". Linux Weekly News. Retrieved 2011-04-25.