Up to [cvs.netbsd.org] / pkgsrc / devel / coccinelle
Request diff between arbitrary revisions
Default branch: MAIN
Revision 1.6 / (download) - annotate - [select for diffs], Fri Oct 14 09:06:35 2011 UTC (7 months, 1 week ago) by obache
Branch: MAIN
CVS Tags: pkgsrc-2012Q1-base,
pkgsrc-2012Q1,
pkgsrc-2011Q4-base,
pkgsrc-2011Q4,
HEAD
Changes since 1.5: +48 -0
lines
Diff to previous 1.5 (colored)
Update coccinelle to 0.2.5.
(accept any of python-2.x).
* 0.2.5
** Language:
- Make a very small attempt to parse C++ code, amounting to accepting
identifiers containing ::, tilde, and template invocations. Use the
option -c++. This is not likely to be very useful in practice.
- Added metavariable metavariable type.
- Add disjunctions on identifiers in some contexts
- Pretend that & indicates a pointer in -c++ mode
- Support for new and delete
- Allow arrays in smpl parameter declarations. Thanks to Jesper Louis
Andersen for pointing out the problem.
- Field list metavariables
- Add the ability to add __attributes__ (NB, no matching on attributes)
- Slightly improved the error message for transformation on multiple
variable declaration. Thanks to Jonathan Nieder for pointing out the
problem.
** Features:
- support transformations on variables (only) in declarations that declare
multiple variables
- allow #endif XXX in C code
- relax_include_path now applied to non local includes too, in which case
it tries to find a unique file with a suffix of the provided name.
this is useful for directories that are intended to be symbolic links.
- support matching and removing #undef
- support for iteration in ocaml, requires use of -no_show_diff
- calls to likely and unlikely propagate test expression status to their
arguments
- reuse typedefs and macros from complete parsing when reparsing the
transformed code
- better explanation when presenting glimpse tokens
- optimization for an if branch that is just { ... }
- spatch -control_flow_to_file file.c generates a file file.dot
- include files with names ending in .cpp if -c++ option is given
- removed use of the no longer supported sexplib function Conv.hashtbl_of_sexp
- add information about which Fedora packages are needed
** Bugfix:
- improved parsing of expressions to allow ... to the right of operators in
more places
- Fix check_config for Python 2.7 on Fedora 14 (Reported-by: Michael Stefaniuc)
- Check for ocamlfind in configure (Reported-by: Paul E. McKenney)
- Postpone use of ocamlfind at runtime to report fewer errors
- Add support for Python 2.4 binding with the provided pycaml library
- Allow '@' in script code. Thanks to Laurent Reveillere for noticing the
problem.
- Remove an optimization of x or true to true in asttoctl2 for the case
where x may make a modification, eg the case of -thing ?-thing
- Allow adding comments before a function.
- Introduction of newlines in function arguments needs to take into account
that the code added by SmPL can include newlines. Thanks to Thomas
Gleixner for finding the problem.
* 0.2.4
** Language:
- scripts now have names and can declare metavariables that are seen by
SmPL as identifier metavariables, see demos/{python,ocaml}tococci.cocci
- declaration (match variable declarations) and field (match structure
field declarations) metavariables
- matching of array initializations and of enum declarations
** Features:
- compatability with Python 2.7. Thanks to Richard W.M. Jones for pointing
out the problem
- python and ocaml string representations of parameter lists and expression
lists
- try simpler patterns on glimpse failure
- graceful and immediate failure when a virtual rule is defined on the
command line, but not in the rule
- spatch returns -1 when a virtual rule is requested that is not supported
- no transformation when using * with the option -no_show_diff
- expanded +++ file name for match output
- struct *^* and enum *^* metavariable types
- allow an assignment to match a variable initialization, even if multiple
variables are declared at the same time.
- add the option -recursive_includes
- added the option -use_idutils. The requires the previous use of the
script idutils_index.sh
** Bugfix:
- detect used after metavariables in simple statement metavariable match
- allow inheriting position variables over rules that make transformations
but depend on virtual rules that are not defined on the command line
- treat top-level tokens in decl visitor. Thanks to Peter Tummeltshammer
for noticing a resulting problem.
- improve typing of the result of an assignment expression
- eliminate some recursive calls in C code parsing to avoid stack overflows
- better pretty printing of #define when the whole line is removed
- better pretty printing of asm code containing
"::[input]"r"(&coherence_data[i])"
- allow pretty printing of C code with nameless bit fields
- avoid adding an error message to standard output if ocamlfind is not
found
- struct/union/enum-typed metavariables with a metavariable type name
- better management of whitespace between deleted lines. Thanks to
Andriy Gapon for noticing the problem.
- improved parsing recovery for badly parsed struct/enum typedefs
- drop expanded tokens in sgrep output. Thanks to Andriy Gapon for
noticing the problem.
- constant strings have array type, not pointer type. Thanks to Vasiliy
Kulikov for noticing the problem.
- improve indentation when adding code after a function call with indented
arguments.
- return type of sizeof converted to unsigned long. Thanks to Vasiliy
Kulikov for noticing the problem.
- improve spacing when adding structure initializers. Thanks to Vasiliy
Kulikov for noticing the problem.
Revision 1.5 / (download) - annotate - [select for diffs], Sat Aug 7 14:23:23 2010 UTC (21 months, 2 weeks ago) by jym
Branch: MAIN
CVS Tags: pkgsrc-2011Q3-base,
pkgsrc-2011Q3,
pkgsrc-2011Q2-base,
pkgsrc-2011Q2,
pkgsrc-2011Q1-base,
pkgsrc-2011Q1,
pkgsrc-2010Q4-base,
pkgsrc-2010Q4,
pkgsrc-2010Q3-base,
pkgsrc-2010Q3
Changes since 1.4: +5 -4
lines
Diff to previous 1.4 (colored)
Update to 0.2.3.
- new URLs for HOMEPAGE and MASTER_SITES
- smaller DESCR (avoids pkglint's complaints)
- remove patch-a{a,b,c} (paths seem to be fixed inside configure/make scripts).
Changelog:
* 0.2.3
** Language:
- <= constraints relating an expression metavariable to one or more
inherited expression metavariables that it should be a subexpression of
- the -inplace and -outplace options have been renamed -in_place and
-out_place. -in_place no longer makes a backup. A backup can be
requested using the option -backup_suffix, eg -backup_suffix .bk
- identifiers can be constrained to be different from an inherited
identifier metavariable, or from a set containing both concrete
identifiers and inherited identifier metavariables.
- support for ocaml scripting
- ast available in ocaml scripts
** Features:
- drop inconsistent paths check when only one node was matched
- allow #define id with no definition
- attempt to add newlines in the generated code when function calls in the
smpl cause passing column 80
- allow - in front of statement level nests, if everything inside the nest
is also -
- 'configure' looks for some system libraries: menhirLib, sexplib, pycaml.
Not available libraries are replaced by a copy provided with the sources.
- added static for a function goes just before what is specified in the
semantic patch, not before any comments etc.
- Add a new option, -ignore_unknown_options, to ease the integration
of Coccinelle as a checker in a toolchain.
- error in python code causes immediate abort of spatch
- use the same algorithm for collecting grep tokens as for collecting
glimpse tokens
- Add scripts/spatch.bash_completion for automatic completion of common
options under the bash shell.
- Print rule name when a script rule crashes
- Allow the declaration of an expression list or parameter list
metavariable to specify the number of expressions or parameters,
respectively.
** Bugfix:
- drop inconsistent paths check when only one node was matched
- better take into account virtual rules when selecting glimpse tokens
- print diff when only a comment is added
- the type of the C code !x should be int regardless of the type of x
- allow python code at the beginning of an included file
- better adjustment of whitespace when deleting adjacent lines. Thanks to
Wolfram Sang for pointing out the problem.
- allow metavariables to be inherited from included files
- allow ? on goto
- more graceful failure on finding a strange character in a macro parameter
list
- support Parameter metavariables
- add space after the last comma in an added portion of an argument list
- SmPL nameless struct should only match a nameless struct, not a nameless
union. Thanks to Peter Tummeltshammer for pointing out the problem.
- adjustments to storage don't modify inline as well
- matching and transformation allowed on inline
- allow removed field between two ... in structure initialization
- allow removing an entire structure initialization
- manage labels within do while 0 macros
- added space after : in printing a conditional expression. Thanks to Josh
Triplett for noticing the problem.
- dropped trailing whitespace when code at the end of a line is deleted.
Thanks to Josh Triplett for noticing the problem.
- Fixed environment management when script rule uses cache. Thanks to
Bissyande for finding the problem.
- when false matches if with no else
- ensure { ... } with whencode checks to the end of the function. Thanks to
Rene Rydhof Hansen for finding the problem.
* 0.2.2
** Language:
- Added ToTestExpression to iso language, see standard.iso for an
explanation
- Added depends on to initialize and finalize script code
** Features:
- Update Emacs mode (cocci.el) to support 'virtual' rules and fix other
keywords sush as 'depends on', 'using', 'disable'
- better treatment of != 0 in isos, communtativity for ==/!= for all
constants
- allow adding // comments and blank lines (even after cocci + code)
- Add support for multiple -I options
** Bugfix:
- correct interaction between virtual rules and included .cocci files
- improvement in treatment of ! in isos, to avoid duplicating + code
- improvement in treatment of metavars as isos, to avoid duplicating + code
between toplevel and variable instantiation
- test expression of smpl conditional, etc no longer assumed to have type
int
- correct + line numbers in the patch produced when using *
- iso constant metavariable matches an identifier whose name is all capital
letters, eg NULL
- allow / at the end of the name of a directory (-dir) or patch prefix
(-patch)
- dropped space in + code after the binding of a type metavariable that is
a pointer type
- better handling of . or .. in -dir name
- allow keywords and metavariable names in identifier constraints (not sure
keywords is very useful, though)
- no lubtype on arguments of && and || in SmPL
- allow unknown as type for array indices in SmPL
- support matching of static annotation on functions that are both static
and inline
- support ENOTDIR error in Common.lfile_exists, to allow for the case where
an include file is in a subdirectory that exists but is an ordinary file,
not a directory.
- better management of unbound position variables that appear in
constraints
- cause python parser to skip over // comments, hoping that // is not
meaningful inside python
- require + on every line of a multiline comment
- correct calculation of line numbers when there is script code
- always annotate arguments of && || and ! as test expressions in C code.
* 0.2.1
** Language:
- Add virtual identifiers
- Add coccilib.report and coccilib.trac Python modules
- coccilib.org and coccilib.report are imported by default but not loaded
in the current scope.
** Features:
- Parse_error_msg now more helpful. New option -verbose_parsing for even
more information.
- Improve Python import handling. They are imported once during script
initialization.
** Bugfix:
- correct treatment of depends on with || for virtual rules
* 0.2.0
** Language:
** Features:
- Remove duplicated code in disjunctions
- Better error message when grep finds nothing relevant. Thanks to Joe
Perches for the suggestion.
- added -keep_comments option for the unparsing of the transformed code
- Option "-version" now also gives information about built-in
Python binding support.
- slightly faster environment manipulation in pathological cases
- hack added to accept well-formed #define after function header
** Bugfix:
- Proper consideration of #define macro arguments in checking for the use
of metavariables and in computing the line numbers of complex terms
- Better parsing of included .cocci files
- Put included .cocci files in the right order
- Bind position variables only once for #include
- Fix bug in include_match that caused everything to halt when all matches
were discarded
- Merge unlikely/likely iso rules under a iso rule named unlikely
- Some fixes to coccicheck rules, thanks to Andrew Lunn
- Support groups in regular expression, thanks to Michael Stefaniuc
* 0.1.11
** Language:
- Meta-identifier/function and constant could be filtered from SmPL by
regular expressions using the "~=" and "!~=" operators followed by
an OCaml regular expression (see man Str) in double quote.
- Virtual rules, which can be referenced in depends, and set and unset
using the command-line options -D
- ++ for multiple additions
** Features:
- coccicheck: a framework to check a series of SmPL files on a project
see scripts/coccicheck for more information
** Bugfix:
- bind position variables to the correct starting position in the case of a
complex statement such as an if or while. Thanks to Derek Jones for
pointing out the problem.
- checking for non mentioned case lines in switch should be unchecked.
- space should be printed after sizeof when there are no parentheses around
the argument. Thanks to Daniel Walker for pointing out the problem.
- avoid introducing sharing in propagating ! over () in treatment of isos
- save_excursion has to handle and rethrow exceptions
- eliminate unnecessary consideration of CVS strings. Thanks to David
Young for pointing out the problem.
- completely new treatment of statement metavariables
- better type checking for macro definitions
- drop regression testing in -parse_c
* 0.1.10
** Language:
- declarations allowed in switch, suggested by Derek M. Jones
** Features:
- use interval timer for timeouts. Thanks to Derek M. Jones for the
implementation.
- more flexible env.sh, thanks to Derek Jones.
- faster Python invocation
- simplify unparsing in the sgrep case
** Bugfix:
- for glimpse there is no point to create a pattern containing a numeric
constant because glimpse doesn't index them
- add spaces after commas in function calls and function headers
- made python integration more like the ubuntu version
http://patches.ubuntu.com/by-release/extracted/debian/c/coccinelle/0.1.5dbs-2/01-system-pycaml
this fixes some memory management problems with None, True, and False
- correct labels associated with a switch in the CFG so that a statement
metavariable can match a switch. Thanks to Derek Jones for pointing out
the problem.
- keep switch pattern within switch body. Thanks to Derek Jones for
pointing out the problem.
- Allow expanded tokens to be stored in metavariables, as long as they are
not removed. But this does currently allow them in + code, which will
produce the expansion. Thanks to Ali-Erdem Ozcan for pointing out the
problem.
- improved adjustment of spacing when code removed at the beginning of a line
* 0.1.9
** Language:
- allow fresh identifiers to be declared using ## such that the value mixes
both strings and previously declared metavariables
** Features:
- better handling of expanded code containing ##. Now compute the
result.
- more precise warning message for the "'\' outside define".
Thanks to Nicholas Mc Guire for pointing out the problem.
- more precise warning message related to ifdefization.
Thanks to Derek Jones for pointing out the problem.
- we don't create any more certain files in /tmp (they may be a cause
of security problems).
Thanks to Eugeniy Meshcheryakov for pointing out the problem.
- More optimization for the case of just deleting a complete function.
Allows this to happen without tracing through all the control-flow
paths. Thanks to Francois Bissyande for pointing out the problem.
- prevent code from being added to the beginning or end of a disjunction
- more information about why a script is not applied when using -debug option
- added -no_safe_expressions option
- added -no_loops option. Ignores back edges derived from looping
constructs. This is unsafe, but perhaps useful for bug finding, as it can
be more efficient.
- for semantic matches, allow "minus" on same code with multiple
environments
- better error message for mismatch of parenthesis in column 0 with normal
parenthesis. Thanks to Derek Jones for pointing out the problem.
- allow disjunctions on function return types. Thanks to Pierre Habouzit
for pointing this out.
** Bugfix:
- keep disjunction in the proper order for structure initialization fields
- variables declared in different places should not seem to match each
other
- drop complaints about label metavariables not being used
- drop test information from the type of an expression when the expression
is bound to a metavariable
- nests should not extend beyond the before and after code, even if the
before and after code matches the nest code
- nests should extend into conditionals that end in error exit
- take into account metavariables on "else". Thanks to Derek Jones for
pointing out the problem.
- print single quotes on generated character constants
- better typedef handling in the initialisation/affectation builtin
isomorphism, cf -test init_affect_typedef
- support disjunction of types on variable declaration
- allow @ within strings in script code. ignore // comment lines in script
code.
- don't drop + code placed after the transformed code
- drop spaces produced by removing code before semicolons
- adjusted spacing within generated code
- less verbose -sp. Thanks to Derek Jones for pointing out the problem.
- accept multiple type names in a SmPL typedef declaration.
Revision 1.4 / (download) - annotate - [select for diffs], Sun Jun 14 17:48:37 2009 UTC (2 years, 11 months ago) by joerg
Branch: MAIN
CVS Tags: pkgsrc-2010Q2-base,
pkgsrc-2010Q2,
pkgsrc-2010Q1-base,
pkgsrc-2010Q1,
pkgsrc-2009Q4-base,
pkgsrc-2009Q4,
pkgsrc-2009Q3-base,
pkgsrc-2009Q3,
pkgsrc-2009Q2-base,
pkgsrc-2009Q2
Changes since 1.3: +1 -5
lines
Diff to previous 1.3 (colored)
Remove @dirrm entries from PLISTs
Revision 1.3 / (download) - annotate - [select for diffs], Wed Apr 29 11:21:52 2009 UTC (3 years ago) by wiz
Branch: MAIN
Changes since 1.2: +2 -1
lines
Diff to previous 1.2 (colored)
Update to 0.1.7. Did I never commit this?? * 0.1.7 ** Language: - initialize and finalize script code, cf demos/initial_final.cocci ** Features: - -iso_limit option to limit the depth of isomorphism application - with the dir option, the include path is implicitly set to the "include" subdirectory of the specified directory, if the option -I is not used. - give a seed for the name of a fresh identifier - better handling of cpp "constructed" identifiers as in a##b, that in the futur will make it easier to match over those idents. cf tests/pb_parsing_macro.c. Thanks to Ali-Erdem Ozcan for pointing out the problem. A new "parsing hack hint" is also available: YACFE_IDENT_BUILDER, cf standard.h. ** Bugfix: - drop excessive "optimization" in ctl generation for while and for loops - allow . as the name of the directory - for type inference for an assignment, take the type of the right-hand side expression, not the type of the assigned variable - allow for with a declartion in the first header element, as in C++ (partial support) - allow for matching against variable declarations that include only storage, eg static, but no type at all. - allow for matching against types that contain both short/long and int - allow the type metavariable in the SmPL code "unsigned T" to match a T that is a type consisting of more than one word, eg long int. - -ifdef_to_if option made to process nested ifdefs (partial support) ** Internals: - improve and fix installation process (usable on BSD) - improve and fix testing process - apply patches from Eugeniy Meshcheryakov - reorganize the way we parse C identifiers, especially concatenated cpp identifiers as in a##b. This may lead to some regressions as we may not parse as much code as before. - removed popl/ and popl09/ and popl related stuff from official distrib.
Revision 1.2 / (download) - annotate - [select for diffs], Mon Apr 6 10:11:05 2009 UTC (3 years, 1 month ago) by wiz
Branch: MAIN
Changes since 1.1: +2 -2
lines
Diff to previous 1.1 (colored)
Update to 0.1.6a: pkgsrc fixes integrated upstream; another post-0.1.6a patch from upstream for a pkgsrc bug report added.
Revision 1.1.1.1 / (download) - annotate - [select for diffs] (vendor branch), Sat Mar 21 23:50:53 2009 UTC (3 years, 2 months ago) by wiz
Branch: TNF
CVS Tags: pkgsrc-2009Q1-base,
pkgsrc-2009Q1,
pkgsrc-20090321
Changes since 1.1: +0 -0
lines
Diff to previous 1.1 (colored)
Initial import of coccinelle-0.1.6: The Linux operating system (OS) is evolving rapidly to improve performance and to provide new features. This evolution, however, makes it difficult to maintain platform-specific code such as device drivers. Indeed, an evolution in a driver support library often triggers the need for multiple collateral evolutions in dependent device drivers, to bring the drivers up to date with the new library API. Currently, collateral evolutions are mostly done manually. The large number of drivers, however, implies that this approach is time-consuming and unreliable, leading to subtle errors when modifications are not done consistently. Moreover, as these collateral evolutions are often poorly documented, the resulting maintenance is difficult and costly, frequently introducing errors. If a driver maintainer becomes unavailable, the driver quickly falls behind the rest of the OS. In this project, we propose a language-based approach to address the problem of collateral evolution in drivers. Specifically, we are developing the development environment, Coccinelle, that provides a transformation language for precisely expressing collateral evolutions and an interactive transformation tool for applying them. The key idea of Coccinelle is to shift the burden of collateral evolution from the driver maintainer to the OS developer who performs the original OS evolution, and who thus understands this evolution best. In our vision, the OS developer first uses the Coccinelle transformation language to write a semantic patch describing the required collateral evolution in device drivers and then uses the Coccinelle transformation tool to validate the semantic patch on the drivers in the Linux source distribution. When he has confidence in the correctness of the semantic patch, he distributes it for use by the maintainers of other drivers. Overall, Coccinelle will provide a means for formally documenting collateral evolutions and for easing the application of these evolutions to driver code.
Revision 1.1 / (download) - annotate - [select for diffs], Sat Mar 21 23:50:53 2009 UTC (3 years, 2 months ago) by wiz
Branch: MAIN
Initial revision