spatch (1) - Linux Manuals

spatch: apply a semantic patch file to a set of C files


spatch - apply a semantic patch file to a set of C files


spatch -sp_file <SP> <files> [-o <outfile> ] [-iso_file <iso> ] [ options ]


spatch is a program matching and transformation tool for C. The programmer describes the code to match and the transformation to perform as a semantic patch, which looks like a standard patch, but can transform multiple files at any number of code sites.

Further information about spatch is available at


Here is a summary of the most commonly used options:

-sp_file <file>
the semantic patch file
-dir <dir>
process all files in directory recursively
-iso_file <file>
-macro_file <file>
print some information to help debug the matching process
causes all available include files to be used
causes not even local include files to be used
-I <dir>
the directory containing the include files
process header files independently
works with -dir, use information generated by glimpseindex
-o <file>
the output file. If none is specified, a patch is generated on the standard output
do the modification on the file directly
store modifications in a .cocci_res file
show the version of spatch
show the date on which spatch was compiled
see short list of options
see all the available options in different categories
-help, --help
show summary of options.


  ./spatch -sp_file foo.cocci foo.c

Apply the semantic patch foo.cocci to the C file foo.c. The semantic patch is applied modulo a set of isomorphisms contained in standard.iso (standard.iso is by default located in /usr/local/share/coccinelle/standard.iso). A patch showing the effect of the application, if any, will be generated on the standard output.

  ./spatch -sp_file foo.cocci foo.c -o /tmp/newfoo.c

The same as the above, except that a modified version of foo.c is stored in /tmp/newfoo.c.

It is also possible to apply spatch to all of the C files in a directory:

  ./spatch -cocci_file foo.cocci -dir foodir . 

If the semantic patch is not working as expected, the option -debug shows selection of information about the application of a semantic patch to a file or directory.


This file contains the default set of isomorphisms.
This file contains the default set of macro hints.


The path to coccinelle share directory. Defaut is /usr/local/share/coccinelle


Y. Padioleau, J.L. Lawall, R.R Hansen, G. Muller "Documenting and Automating Collateral Evolutions in Linux Device Driver" EuroSys 2008, Glasgow, Scotland (April 2008) pp. 247-260.


spatch was written by Julia Lawall <julia [at]>, Yoann Padioleau <yoann.padioleau [at]>, Rene Rydhof Hansen <rrhansen [at]> and Henrik Stuart <henrik [at]>.

This manual page was written by Yoann Padioleau <yoann.padioleau [at]> and Julia Lawall <julia [at]>.


Send a mail to <cocci [at]>


Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen. spatch is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, according to version 2 of the License.