Up to [cvs.NetBSD.org] / pkgsrc / devel / coccinelle / patches
Request diff between arbitrary revisions
Default branch: MAIN
Revision 1.2 / (download) - annotate - [select for diffs], Sat Jun 4 10:47:48 2022 UTC (8 months ago) by wiz
Branch: MAIN
CVS Tags: pkgsrc-2022Q4-base,
pkgsrc-2022Q4,
pkgsrc-2022Q3-base,
pkgsrc-2022Q3,
pkgsrc-2022Q2-base,
pkgsrc-2022Q2,
HEAD
Changes since 1.1: +2 -1
lines
Diff to previous 1.1 (colored)
coccinelle: add upstream bug report URL
Revision 1.1 / (download) - annotate - [select for diffs], Sat Jun 4 10:44:31 2022 UTC (8 months ago) by wiz
Branch: MAIN
coccinelle: update to 1.1.1. * 1.1.1 ** Language: - Semantic patch for other languages - Support metavariables, virtual rules and virtual identifiers in initialize and finalize rules - Support for matching #ifdef, etc. - function-typed metavariables - virtual typedef, declarer name, iterator name - regexps for type metavariables - 'symbol' metadeclaration for C identifiers that are guaranteed not intended as meta variables. - allow mixing isomorpisms with normal rules ** Features: - New scripting languages - more than one SP on the command line - interpret #if, as is done for #ifdef - restored support for with-python in configure and support for --python option in the command line to use a specific python interpreter ** Bugfix: - Add more information in documentation, man pages and wiki - typedefs from C code should not be used before their point of inference (saved_typedefs in cprogram_of_file) * 1.1.0 ** Language - Allow fresh ids to be generated from a script - Account for metavariables used as the argument of typeof - Allow for annotations as metavariables - Allow auto as type when processing a C++ file (C++ >= 11) - bool is now a known typedef - Add support for statement list - Better handling of annotations ** Features - Allow command line options to be written in cocci files using the #spatch directive - Add --opt-c option to try and process a C file only if it exists (ignore its absence otherwise) - Allow for user to optionally specify the C++ version with the --c++ argument - More efficient management of header files ** Bugfix - Improved documentation (mostly metadecl) - Improved pretty printing - Improved error reporting - Better handling of "complex" pointer types (e.g. char * const *) - Fix expected grammar to better fit C99's: - Allow assigning to the dereferencing of a function call. Problem reported by Joe Perches - Camlp4 is no longer needed - Removed the pygtk dependency - Stop relying on Pervasives but on Stdcompat.Stdlib for backward compatibility * 1.0.9 ** Language: - More kinds of string and char constants, mostly from C11. Not typed correctly. Requested by Michael Stefaniuc. - Field conj, disj, and opt can now successfully match field metavariables ** Features: - Try to avoid passing arguments of macro calls with no trailing semicolon ** Bugfix: * 1.0.8 ** Language: - Support for long double complex, double complex and float complex at the C and SmPL level. - Add conjunction for identifiers. - Simplify pragma matching. - Support llu in C code and SmPL code. Suggested by Timur Tabi. - Add support for macros with an initialiser as the body. Requested by Thomas Pedersen. - Allow scripts on comment metavariables. Requested by Christoph Böhmwalder. ** Features: - Some changes to the kinds of transformation allowed on declarations or fields with multiple variables. See the last paragrph of the declarations section in the manual. - Minimal support for multi-line pragmas. C parsing is supported, but matching is not. - Allow changing the extension of the name of the file checked by --compare-with-expected, using the --expected-extension flag. - Optimize case of { ... } when the braces are removed to avoid going through the body. - Allow const on signed/unsigned in SmPL. ** Bugfix: - check identifier constraints when an identifier metavariable appears in a struct-typed metavariable. - type for eg &a->b should be const when a is const - Allow modifications within a function pointer typedef - reported by Jerome Glisse * 1.0.7 ** Language: - Allow constraints on any metavariables. Constraints can be specified by comprehension (= { ... } or != { ... }, with each item referring to a constant identifier or an inherited meta-variable, and curly-brackets can be omitted for a single item), regular expression (=~ "..." or !~ "..."), integer comparison (<=, <, >=, >) or scripts (:script:...). Constraints can be used in conjunctions (&&), disjunctions (||) and can be negated (!) and parenthesized. Sub-expression constraints (<=) are still dealt separately and can only be used individually or in conjunction with other constraints (not under a disjunction or a negation). See tests/constraints.cocci and tests/type_constraints.cocci - Allow script finalizers for parallel computation. See tests/countcalls.cocci and tests/countcalls_python.cocci - Allow disjunctions on a wider range of syntactic constructions (function definitions, variable declarations, ...). See tests/disj.cocci. - Finalizers now occur before iteration loop and can register new iterations. - Multiple initializers and finalizers are allowed for the same language. - Support function pointer types in casts. - Allow something identified as a MacroDecl as a structure field. - Conjunctions, ie ( & ), for declarations. - Optional bitfield annotation on expression meta-variables. Requested by Kumar Gala. See tests/bitfield_matching.cocci - Bit-field matching, see tests/bitfield.cocci - Anonymous field matching, see tests/anonfield.cocci - current_element position information in position structure (ocaml & python) - matching and transformation of a single attribute after a variable name in a variable declaration. - add conjunctions on types. - make addition of __attribute__((...)) on function definitions work - add typeof to the semantic patch language - require "name" when declaring attribute names. - Support some changes on function pointer typedefs. - allow a coccinelle ocaml script to detect whether parallelism is used, via Flag.parmap_core (None for no pararallelism, and Some x for x cores) - Make it possible to match or add an empty struct type declaration. Suggestion of Michele Martone. - --backup-suffix replaced by --suffix and made applicable to --out-place ** Features: - Better error reporting for unparsable terms when using make_expr etc in script code. Problem reported by Markus Elfring. - --ignore command line argument to specify a prefix of the names of files that should be ignored. - added --max-width to adjust the line width for generated code. Requested by Kumar Gala. - forall and exists for quantifying over the success of matching depends on constraints. - --verbose-includes option to show what files are actually included - allow casts to unknown typedefs on more kinds of constants (reported by Yann Droneaud) - Pick up header files that have the same name as the desired one if they are unique in the provided include paths. - Caching of parsed header files, --no-include-cache to disable. - --force-kr and --prevent-kr options to control whether K&R parsing is considered. - Generalization of script constraints to allow reference to metavariables defined in the same rule, only when the constrained metavariable always occurs in rule_elems that also mention any other local metavariables mentioned in the script constraint. Referenced local variables must be declared before the constrained one. - Allow more variety in #pragmas - Add macro names to Coccilib.current_element - Get rid of code that depends on unbound virtual rules - Bash-completion scripts are now installed in share/bash-completion/completions (overridable with the new with-bash-completion option, reported by Himanshu Jha) - Allow using -o when only the main file changes, even if headers have been matched. - Preserve spacing for comments in statement and declaration metavariables, when they are used in + code. ** Bugfix: - Improved detection of metavariables in strings. Problem reported by Wolfram Sang. - Don't require all metavars in type exp meta constraint to be bound, unless only one type is specified. Problem reported by Michael Stefaniuc. - Finalization scripts are executed even in case there is no other script rules. - spatch should find standard.iso and Python modules even if COCCINELLE_HOME and PYTHONPATH are not set (either in the directory where the executable is if it contains standard.iso, or in ../lib/coccinelle relatively to where the executable is). - Improve SmPL parsing of added __attribute__. Problem repported by Eduardo Habkost. - In python scripts, virtuals should not overwrite locals with the same name. Problem reported by Bhumika Goyal. - Identify typedefs in type metavariable constraints, problem identified by Michele Martone. - #ifdefs and cpp directives should not be able to be bound to MetaField metavariables. Problem found using an example contributed by Michele Martone. * 1.0.6 ** Language: - Allow \ in #define in semantic patch rules, to allow body with multiple lines, potentially including changes. As a side effect, \ is also allowed in when specifications, again to allow patterns to stretch over multiple lines. - Add identifier list metavariables for #define parameter lists ** Features: - Add Coccilib.version() allowing ocaml code to access the version of spatch being used. - Per file profiling with --profile-per-file for processing of directories. - allow -j9 and -Ifoo, as used in some other tools ** Bugfix: - Allow parallel compilation for bundles. Issue identified by Luis Rodriguez. - Allow the use of absolute path names with id-utils. Issue identified by Luis Rodriguez. - Clean up temporary files when using parmap. Issue identified by Luis Rodriguez. - Do nothing when there are no files to work on, avoiding parmap temporary file creation issues. * 1.0.5 ** Language: - In the Coccilib interface, the function file, giving the file being currently processed, has become files, returning a list of file names, because Coccinelle can work on more than one file at once. - For typedefs, symbols, iterator names, and declarer names, allow redeclaration as either the same kind, or temporary redeclaration as a metavariable. - Support for Python 3. Pycaml has been patched. The bundled version is systematically used, even if Pycaml is already installed locally. - Support for iterations in Python scripts - Metavariable initialization in Python scripts to a number of kinds of AST structures ** Features: - addition of --file-groups option - ocaml code allowed as constraints on position variables - --enable-release configure option not accepted any longer. - Extend pycocci SmPL <=> Patch equivalence proof with [ -c | --clean-proof ] support to enable support for a quiet and clean SmPL patch proof, this will nuke any temporary branches used for the proof if everything went well. - Add support for SmPL <=> Patch equivalence using pycocci using patches, for an example refer to: o tests/pycocci/patches/0001-proto3* o tests/pycocci/code/0001-proto3/ To test, use: ./scripts/pycocci-check.sh after building Coccinelle. This will touch your reflog though, and as such is disabled by default, to clean your reflog you can use: git reflog expire --all --expire=now - Added --tmp-dir option, to specify the name of the temporary directory used to hold the results obtained on the different cores with the -j option. - --defined and --undefined arguments now apply to #if as well as #ifdef. The expression has to be written exactly as it appears in the code, minus leading whitespace and any comments (leading or nonleading). - Compare the standard output of scripts in test files with testfile.stdout if provided (with --compare-with-expected) - Compatible with OCaml 4.03.0 ** Bugfix: - pycocci: skip proof when git dir is dirty - pycocci: fix gitname use, when using SmPL <=> patch equivalence proof support and a relative path was used as target the git project base directory was not being found, using absolute paths fixes this. - Don't complain about unreferenced variables in ungenerated rules - Be flexible about the matching of the first or last comma in a ... parameter or expression list, also in the case of transformation. - Fix various omissions related to binary and assignment metavariables. - Add whitespace on C code/transformed code boundary. - Types declared in header files are now taken into account while parsing C files. - ( and & now allowed at the start of a line in a SmPL rule header - Remove added space when removing unneeded parens at the start of an arglist, reported by Daniel Lundqvist - Better pretty printing of array type declarations that result from T i; where at least T is a metavariable. - Various improvements in the pretty printing of C code stored in metavariables. - Bundled Menhir can now be used to compile the mly grammar. - Bundled PCRE now links correctly. * 1.0.4 ** Language: - Length for statement list metavariables ** Features: - file in declaration for depends on constraints ** Bugfix: - build system: delete pregenerated parsers if menhir is installed * 1.0.3 ** Language: - Conjunction (analogous to disjunction) - Drop Circles, Stars - Drop Unique - Default values for script metavariables ** Features: - Removed the extlib and sexp bundles which were not used any more. - Drop support for OCaml 3.11 which did not allow to compile coccinelle in native code - Print metavariables properly for script code. - Print metavariables properly for cocci code. - SYSCALL_DEFINE macros, contributed by Jörn Engel - --indent option, giving default indent, for projects not using tabs - Introduce .cocciconfig configuration file - Add some support for MetaStmtList. Allowed at top level of {}. - timeout of 0 is no timeout, to allow cancelling this option. - --print-options-only to see accumulated options. ** Bugfix: - Allow virtual variable definition to contain an =. - Improvement when exists rule contains when forall. - The presence of camlp4 is no longer checked when not needed (only required to compile the bundled OCaml bindings for Python) * 1.0.2 ** Language: ** Features: - Positions of C tokens are now computed while lexing rather than during a distinct pass. This makes use of the Lexing.new_line function which has been introduced in OCaml 3.11. Coccinelle can thus no longer be compiled with OCaml 3.10. - --use-gitgrep falls back to --use-coccigrep for a non-git repository. - ocaml coccilib allows propagating identifiers, expressions, statements, listlens, and positions to subsequent matching rules, via new ocaml code constructors: make_ident, make_expr, make_expr_with_env etc. - Allow @S, for statement metavariable S on expressions - Exploit explicit positive constraints (no regexps) on identifiers in file filtering - Ability to declare a rule as matching an identifier. Doesn't work properly for names of typedefs, enums, structures, or unions. - autogen creates a version number that corresponds to the most recent commit. ** Bugfix: - Coccinelle's "make install" now copies files to /usr/local/lib instead of /usr/local/share - Iso: allow mixed for model for the case where the model is just a metavar Thanks to Kris Borer for reporting the problem - Allow ! to propagate into == or other ops in more cases.