Top Qs
Timeline
Chat
Perspective
Coccinelle (software)
Open-source system for transforming C code From Wikipedia, the free encyclopedia
Remove ads
Coccinelle (French for ladybug) is an open-source for matching and transforming the source code of programs written in the C programming language.
Remove ads
Utility
Coccinelle was initially used to aid the evolution of the 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.
It can also be used to find defective programming patterns in code (i.e., pieces of code that are erroneous with high probability such as possible NULL pointer dereference) without transforming them. Therefore coccinelle's role is close to that of static analysis tools. Examples of such use are provided by the applications of the herodotos tool, which keeps track of warnings generated by coccinelle. [2][3]
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.
The source code of Coccinelle is licensed under the terms of version 2 of the GNU General Public License (GPL).
Remove ads
Semantic Patch Language
The source code to be matched or replaced is specified using a "semantic patch" syntax based on the patch syntax.[4] The Semantic Patch Language (SmPL) pattern resembles a unified diff with C-like declarations.[5][6]
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)
Remove ads
References
External links
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads