Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
spgen(1)		    General Commands Manual		      spgen(1)

NAME
       spgen - harden a	Coccinelle semantic patch

       spgen  _SmPL-patch.cocci_ [-c | --config	<spgen config>]	[-i | --inter-
       active] [--default] [-o <output file>] [--no-output] [-help | --help]

DESCRIPTION
       spgen is	a source-to-source  transformation  tool  for  hardening  Coc-
       cinelle semantic	patch scripts.
       It  takes  a semantic patch and outputs the same	patch with added meta-
       data and	more options in	the form of virtual rules:

	      -	patch: used for	+ or - rules that transform matching C code.

	      -	context: used for * rules that find matching C code.

	      -	org: used for script rules that	output matches	in  emacs  org
	      format.

	      -	 report:  used	for script rules that output matches in	pretty
	      print format.

       A semantic patch	hardened with spgen thus preserves  the	 functionality
       of the original patch, but allows the user to control the output	mode.

       The  user  can  also  specify  metadata	to be included in the hardened
       script.

	      -	Description of the patch's functionality.

	      -	Confidence level for the patch.

	      -	Authors	of the patch.

	      -	URL for	gaining	more information about the patch.

	      -	Known limitations of the patch.

	      -	Keywords for the patch.

	      -	spatch options with which to run the patch.

	      -	Additional comments regarding the patch.

	      -	Rule messages to be output in script mode for each match.

       The metadata can	be  specified  in  a  configuration  file  or  entered
       through the commandline in interactive mode. The	syntax of the configu-
       ration file follows a simple newline-separated  <attribute=value>  pat-
       tern.   Use interactive mode to get an automatically generated configu-
       ration file.

EXAMPLES
       Generate	a hardened version of <foo.cocci> using	the  configuration  in
       <foo.config>:

	 ./spgen <foo.cocci> --config <foo.config>

       Generate	 a  hardened  version  of  <foo.cocci>	using interactive mode
       through the commandline.	The user will be able to save  their  interac-
       tively specified	configuration to a file:

	 ./spgen <foo.cocci> --interactive

       By default, spgen will look for a foo.config file in the	same directory
       and use that as configuration. If not found, it will start in  interac-
       tive mode:

	 ./spgen <foo.cocci>

       Output the hardened version to <newfoo.cocci> instead of	stdout:

	 ./spgen <foo.cocci> -o	<newfoo.cocci>

       Suppose	that  <foo.cocci>  is the original patch and <newfoo.cocci> is
       the hardened version of <foo.cocci>. Then what could be achieved	with

	 spatch	--sp-file <foo.cocci> <foo.c>

       can now be achieved with

	 spatch	--sp-file <newfoo.cocci> <foo.c> -D patch

       Substitute patch	with context, org, or report  for  any	of  the	 other
       modes.

OPTIONS
       Here is a summary of the	options	available on spgen:

SYNOPSIS
       spgen  _SmPL-patch.cocci_ [-c | --config	<spgen config>]	[-i | --inter-
       active] [--default] [-o <output file>] [--no-output] [-help | --help]

       -help | --help
	      Print the	help menu.

       -c | --config <foo.config>
	      Harden the <SmPL-patch.cocci> using the configuration  specified
	      in <foo.config>.

       -i | --interactive
	      Harden the <SmPL-patch.cocci> using configuration	options	speci-
	      fied through the commandline.

       -o <output.cocci>
	      Output the hardened semantic patch to <output.cocci> instead  of
	      stdout.

       --default
	      Harden  the  <SmPL-patch.cocci> without a	configuration, instead
	      using default values. This option	mainly exists to see what  the
	      generated	 script	would look like, as the	default	values are not
	      specific to the input script.

       --no-output
	      Run the program without outputting anything. This	option	mainly
	      exists to	check that the input script and	configuration file are
	      parsable.

AUTHOR
       spgen and this man page were written by Chi Pham	<chidaph@gmail.com>

REPORTING BUGS
       Send a mail to <cocci@systeme.lip6.fr>

COPYRIGHT
       Copyright 2015, Chi Pham	spgen 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.

SEE ALSO
       spatch(1), pycocci(1), diff(1)

			       October 17, 2015			      spgen(1)

NAME | DESCRIPTION | EXAMPLES | OPTIONS | SYNOPSIS | AUTHOR | REPORTING BUGS | COPYRIGHT | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=spgen&sektion=1&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help