Coccinelle: A Program Matching and Transformation Tool for Systems Code

02 Jul
Friday, 07/02/2010 7:00am to 8:00am

Gilles Muller

Computer Science Building, Room 151

Faculty Host: Prashant Shenoy

Program matching is the process of searching within the source code of a program for code fragments matching a given pattern, described using some language. Program matching languages have been found useful in specifying rules for program manipulation tasks such as compiler optimizations, bug finding, refactorings, and evolution.

We have developed the transformation system Coccinelle, which provides the language SmPL (Semantic Patch Language) for specifying desired matches and transformations in C code. Coccinelle was initially targeted towards performing collateral evolutions in Linux. Such evolutions comprise the changes that are needed in client code in response to evolutions in library APIs, and may include modifications such as renaming a function, adding a function argument whose value is somehow context-dependent, and reorganizing a data structure. Beyond collateral evolutions, Coccinelle is successfully used (by us and others) for finding and fixing bugs in systems code.

In this talk, we present the main features of Coccinelle and some of its classical usages.


Gilles Muller received the Ph.D. degree in 1988 from the University of Rennes I, and the Habilitation a Diriger des Recherches degree in 1997 from the University of Rennes I.

After having been a researcher at INRIA and a Professor at the Ecole des Mines de Nantes, he is currently a senior research scientist at INRIA Paris-Rocquencourt. His research interests include the development of new methodologies based on the use of domain-specific languages for the structuring of operating systems. Gilles Muller has been a member of the IEEE since 1995 and was the vice chair of the ACM/SIGOPS from July 2003 to July 2007.