FreeBSD Manual Pages
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+13.1-RELEASE+and+Ports>