Newer
Older
###############################################################################
# Preliminary notes: #
# ------------------ #
# Mark "-": change with an impact for users (and possibly developers). #
# Mark "o": change with an impact for developers only. #
# Mark "+": change for Frama-C-commits audience (not in html version). #
# Mark "*": bug fixed. #
# Mark "!": change that can break compatibility with existing development. #
# '#nnn' : BTS entry #nnn #
# '#!nnn' : BTS private entry #nnn #
# '#@nnn' : Gitlab frama-c/frama-c issue #
# For compatibility with old change log formats: #
# '#?nnn' : OLD-BTS entry #nnn #
###############################################################################
##################################
Open Source Release <next-release>
##################################
###################################
Open Source Release 21.0 (Scandium)
###################################
-* Doc [2020-05-07] Fixes internal refs in generated pdfs (fixes #2505)
-* Kernel [2020-05-04] Accept UCN-encoded unicode char in ACSL (fixes #@849)
o Kernel [2020-04-27] Plug-ins specific dirs now use Filepath instead of
o Kernel [2020-04-27] Plug-ins specific dirs now use Filepath instead of
- Eva [2020-04-10] Fixes the Memexec cache on functions with logical
annotations about variables unused in the C body of the function.
- Eva [2020-04-06] New option -eva-domains-function to enable domains
only on given functions. Argument <d:f> enables the domain [d]
on function [f], while <d:f+> also enables it on all functions
called from [f]. <d:f-> disables [d] from function [f].
- Eva [2020-04-03] New experimental builtins for dynamic allocation
Frama_C_*alloc_imprecise: faster convergence, but very imprecise.
- Kernel [2020-04-01] Report user errors when keys are not bound to a
value for command-line options that require pairs of key:value
as arguments. Such keys were silently ignored.
*! Kernel [2020-03-30] Reject labels at end of blocks.
- RTE [2020-03-30] Emits alarm on invalid pointers when option is on
- Eva [2020-03-30] Emits alarm on invalid pointers when option is on
- Kernel [2020-03-30] New option -warn-invalid-pointer (disabled by
default) to warn on invalid pointer arithmetics resulting in a
pointer that does not point to an object or one past an object.
- RTE [2020-03-27] Emits alarm on pointer downcast when option is on
- Eva [2020-03-27] Emits alarm on pointer downcast when option is on
- Kernel [2020-03-27] New option -warn-pointer-downcast (activated by
default), to warn when a conversion between pointer and integer
might provoke a loss of precision.
- Kernel [2020-03-20] Add option -cpp-extra-args-per-file
-* Kernel [2020-03-18] Fixes #@823 (-load-module/-load-script now accept
-* Kernel [2020-03-18] Fixes #@818 (term generated for downcast alarms)
- Eva [2020-03-17] Supports the ACSL extended quantifiers \min and \max.
- Eva [2020-03-17] deprecate options -eva-*-domain in favor of
- ACSL [2020-03-04] Make conversion from C ptr to logic array explicit
- Eva [2020-03-03] Evaluates the logic predicate memchr_off, used in
- Eva [2020-03-03] Slightly better heuristics for the subdivision of
- Instantiate [2020-03-02] New plug-in Instantiate, to create function
specializations for specific plug-ins and functions (e.g. malloc,
memcpy, memset), to overcome limitations due to their
specifications.
- Kernel [2020-02-25] support for ghost else blocks
- Kernel [2020-02-18] checks that ghost code does not modify the normal
-* Kernel [2020-02-17] fixes issue that could prevent loading plug-ins on
- Kernel [2020-02-14] -constfold now takes into account value
o ACSL [2020-02-13] Add possibility for ACSL extensions to alter the
sequence of untyped terms they receive from the parser. Make also
possible to customize the short pretty printer of extensions.
o Kernel [2020-02-13] Deprecated:
- Logic_typing.register_*_extension
- Cil_printer.register_*_extension
- Cil.register_behavior_extension
Use Acsl_extension.register_* instead
- Eva [2020-02-12] New option "-eva-domains <d1>,<d2>,..." to enable
several domains at once. The list of available domains is given
in the help message of the option.
o! Eva [2020-02-12] Simplifies abstract domain signature by removing the
-* Eva [2020-02-12] Fixes the evaluation of logic predicates involving
- Eva [2020-02-07] Supports the logic evaluation of quantifiers
introducing mathematical variables (integer or real).
o! Kernel [2020-02-04] Removed FCBuffer, FCMap and FCSet. Use directly
OCaml stdlib modules Buffer, Map and Set instead.
- Eva [2020-02-04] Renamed option -eva-malloc-functions into
-eva-alloc-functions. Also contains calloc and realloc by default.
-* GUI [2020-01-24] Fix order of globals in the source panel.
- Eva [2020-01-23] Adds consistency checks on return and parameters
types between a builtin and the replaced C function.
- Eva [2020-01-23] Subdivisions can now be enabled locally:
- through the new option -eva-subdivide-non-linear-function that
overrides the global option for the given functions;
- via /*@ subdivide N; */ annotations on specific statements.
##################################
- Eva [2019-11-25] In the summary, fixes the number of alarms by
category when the RTE plugin is used, and do not count logical
properties in dead code as proven.
-! Kernel [2019-10-31] More stringent verifications on the use of ghost
- MdR [2019-10-31] New plug-in Markdown-Report (MdR) for markdown and
- Eva [2019-10-23] In the summary, fixes the total number of functions
- Eva [2019-10-23] New option -eva-auto-loop-unroll N to unroll all
loops whose number of iterations can be easily bounded by <N>.
- Eva [2019-10-21] New octagon domain inferring relations of the form
l ≤ ±X±Y ≤ e between pairs of integer variables X and Y. Enabled
with option -eva-octagon-domain. Only infers relations between
pairs of scalar variables occuring in a same instruction.
Intra-procedural by default; octagons can be propagated through
function calls with option -eva-octagon-through-calls.
- ACSL [2019-10-04] Support for ghost parameters
- Eva [2019-10-04] Evaluates ACSL predicates \is_plus_infinity and
\is_minus_infinity.
- Kernel [2019-10-04] Supports macro INFINITY and NAN.
o Config [2019-09-27] ocp-indent 1.7.0 is now used for indentation
o Eva [2019-09-16] Dynamic registration of abstract values and domains:
developers of new domains no longer need to modify Eva's engine.
-* Kernel [2019-09-13] Fixes Hptmap on keys with id greater than 2^28.
-* Makefile [2019-09-12] Fixes #2378 - bytecode only compilation (patch
contributed by madroach) and use -thread where needed.
-* Eva [2019-08-21] Fixes the reduction by the negation of \initialized
and \dangling predicates on imprecise lvalues.
-* Kernel [2019-08-20] Fixes a rare but critical bug which occured when
Frama-C internally switched the current project in presence of >2
projects and destroyed the old current project at about the same
time: the Frama-C internal state became inconsistent and lead to
unsound computations and crashes. It may be revealed to the
end-user when using a long sequence of -then-replace (at least 3
of them).
-* Kernel [2019-08-20] Fixed sequence of -removed-projects and -then
o Ptests [2019-08-05] Add new MODULE directive for compiling and loading
an auxiliary OCaml module for a test
- Kernel [2019-08-05] Add -keep-unused-types normalization option
- Libc [2019-08-05] Remove obsolete (and forcing cpp error) builtins.h
o! Kernel [2019-08-02] Functions over visitor's behaviors have been moved
from Cil into a new module Visitor_behavior. Apply the migration
script potassium2calcium.sh to update your plug-ins automatically.
o! Sparecode [2019-07-26] Removed from Db. Use proper Sparecode API instead.
-! Kernel [2019-07-24] OCaml version greater than or equal to 4.05.0 required.
- Kernel [2019-07-24] Improve placeholders handling in -cpp-command
o! Kernel [2019-07-23] Types in Properties are now records and not tuples
- Eva [2019-07-09] Supports ACSL floating-point comparison operators
eq_float, le_float, eq_double, le_double, etc.
o! Kernel [2019-06-28] removes AST constructors TCoerce, TCoerceE,
-* Kernel [2019-06-20] fixes dangling ref when removing unused static local
####################################
Open Source Release 19.0 (Potassium)
####################################
-* RTE [2019-05-24] fixes a crash when visiting variable declarations
- Eva [2019-04-19] The new annotation /*@ split exp; */ enumerates the
possible values of an expression and continues the analysis
for each of these value separately, until a /*@ merge exp; */
is encountered. It is also possible to maintain this partitioning
at all times with the option -eva-partition-value exp.
- Eva [2019-04-19] New option -eva-partition-history N to delay the join
of abstract states for up to N merging points, thus keeping these
states separate longer. Useful when a reasoning depends on the
path taken to reach a control point, but can increase the analysis
time exponentially in N.
- Eva [2019-04-19] Loop unroll annotations now accept non-constant but
bounded expressions as the maximum number of unrollings to perform.
-* Kernel [2019-04-09] Avoid crashing on one-letter attributes. Fixes #2432
-* Obfuscator [2019-04-09] Also obfuscate formals in function pointer types.
- Eva [2019-04-05] Prints an analysis summary at the end, outlining the
analysis coverage and the number of errors, warnings and emitted
alarms. It can be disabled with the option -eva-msg-key=-summary
- Eva [2019-04-03] New option -eva-precision to globally configure the
analysis from 0 (fast but imprecise) to 11 (accurate but slow).
A precision of 5 is often a reasonable trade-off. This meta-option
automatically sets up other options that can also be overriden.
- Inout [2019-04-01] Fix performance issue when initializing large arrays.
- ACSL [2019-03-08] Add check annotation, similar to assert except that
it does not introduce additional hypotheses on the program state
-* Makefile [2019-03-07] Do not attempt to install .cmx on bytecode-only
architectures. Patch by M. Dogguy backported from Debian package
- Libc [2019-03-05] Better specs and removal of half-implemented ifdef
that tried to take various POSIX versions into account
-* Kernel [2019-03-05] Better detection of invalid goto in presence of VLA
- GUI [2019-03-04] Compatibility with lablgtk3 and improved handling of
- ACSL [2019-03-01] Clarifies which C variables are in scope under a
- Libc [2019-02-26] Ask clang not to warn about unknown FRAMA_C_MODEL
attribute when pre-processing frama-c's libc
-* Obfuscator [2019-02-26] Obfuscate logic types and logic constructors.
-* Inout [2019-02-21] Fixes operational input on const local initialization
o RTE [2019-02-21] RTE has a static API
o Kernel [2019-02-18] When registering extended ACSL annotations, one
must now indicate whether they should have a status.
o Kernel [2019-02-05] Integer API moving closer to Zarith
- Eva [2019-01-19] New warning category for detecting loops without
- Eva [2019-01-31] Ignore annotations with "no_eva" tag
-* ACSL [2019-01-19] Accept C identifiers that happen to be ACSL keywords
- Eva [2019-01-10] Improved precision on nested loops (by postponing
the widening on inner loops according to -eva-widening-period).
-* Aorai [2019-01-04] Fixes #@586: avoid removing the initial state
- Kernel [2019-01-03] Add attributes for loop statements to allow
-! Kernel [2019-01-03] Add statement attributes (sattr) to the AST. They
are not printed by default, use -kernel-msg-key printer:attrs
-! Kernel [2019-01-03] Improved precision of integer abstract bitwise
-* Eva [2018-12-17] Fixes -eva-split-return on uninitialized or escaping
function returns when -eva-warn-copy-indeterminate is disabled.
o Kernel [2018-12-11] New functions for retrieving major and minor version
-* Kernel [2018-12-04] Fixes AST integrity check wrt volatile accesses
-* Kernel [2018-11-21] Fixes #@553 - pretty-printing of basic asm template
################################
Open Source Release 18.0 (Argon)
################################
-! Kernel [2018-10-24] Log.error and Log.failure will eventually make
Frama-C exit with a non-zero status. Fixes #@552
- Kernel [2018-10-24] More ergonomic command-line options for governing
warning categories statuses.
- Eva [2018-10-24] Enable the memexec cache by default. It can be
disabled by option -eva-no-memexec.
- Eva [2018-10-22] Improved performances when the symbolic locations
domain and the memexec cache are enabled.
- Eva [2018-10-22] The memexec cache is now fully compatible with all
abstract domains provided by Eva. However, the binding to the
Apron domains disable memexec.
- Eva [2018-10-18] New experimental domain "numerors" inferring absolute
and relative errors of floating-point computations. Enabled by the
option -eva-numerors-domain. Does not handle loops for now.
-* Kernel [2018-10-18] Fixes parsing of compound initializers with anonymous
fields. Fixes #2384
-* Kernel [2018-10-16] Consider that asm can change content of pointers
used as inputs when generating assigns clauses. Fixes #@458
- Eva [2018-10-12] Remove option -obviously-terminates.
- Kernel [2018-10-05] New option -warn-invalid-bool, to warn when reading
trap representations of type _Bool.
- Eva [2018-10-04] ACSL predicates with a "no_eva" tag are now ignored.
- Eva [2018-10-03] Warn about currently unsupported specifications
of some libc functions.
- Eva [2018-10-02] Fix the gauges domain on weak bases.
- Eva [2018-10-02] Some fixes and improvements of the equality domain.
-* Kernel [2018-10-02] Rejects sizeof of an incomplete type. Fixes #@560.
-* Kernel [2018-09-26] Add attribute to allow writing into const lvals in
specific (aka C++ constructors and mutable fields) circumstances.
Fixes #2395.
- Kernel [2018-09-14] New warning (disabled by default) when multiple side
effects are unsequenced (CERT-EXP10-C recommandation).
Fixes #@492
- Eva [2018-09-13] Remove option -val-warn-left-shift-negative, and
comply with kernel option -warn-[left|right]-shift-negative.
- Kernel [2018-09-13] New options -warn-left-shift-negative (enabled by
default) and -warn-right-shift-negative (disabled by default),
to control the emission of alarms on shifts on negative integers.
o! Constant Propagation [2018-09-12] Removing Db API for Constant Propagation
plug-in. Calls to !Db.Constant_Propagation should be replaced by
calls to Constant_Propagation.Api.
- Eva [2018-09-12] Reduction of values leading to division by zero
alarms, when possible.
- Eva [2018-09-11] Better reduction of floating-point values cast into
integer types when an alarm is emitted.
- Metrics [2018-09-06] Add option -metrics-used-files, to help identify
unnecessary files given in the command line
- RTE [2018-09-05] Remove option -rte-precond.
- Eva [2018-08-31] Supports the ACSL functions \min and \max.
- Eva [2018-08-30] Fixes the alarms on subtractions and comparisons of
pointers on weak bases (created by allocations in loops).
-! ACSL [2018-08-28] Introduce extensions to global annotations and
better characterization of each extension kind.
See development guide for more information
- Eva [2018-08-28] All options of Eva start with -eva. Aliases to
previous option names preserve backward compatibility.
-! Eva [2018-08-28] Rename plug-in shortname from 'value' to 'eva'. Eva
is now properly named Eva in all logs, in the GUI, and as the
emitter of the alarms.
-! Kernel [2018-08-23] Introduce Filepath dataype for more consistent
normalization of filenames
-* Kernel [2018-08-23] Do not allow compound assignments to const variables
Fixes #@384
-! Kernel [2018-08-23] Remove option -const-writable: const globals are
unconditionally constants
-* Eva [2018-08-02] Deprecate option -val-warn-builtin-override in favor
of warning category builtins:override.
- Kernel [2018-07-26] Fix compilation on OpenBSD
patch contributed by madroach. Fixes #2379
- Kernel [2018-07-26] New option -remove-inlined to remove function(s)
after -inline-calls, add category @inline to refer to all
functions with inline attribute (for both options).
- Eva [2018-07-23] The debug category "garbled-mix" becomes a warning
category. Better track of garbled mix created by specification.
-* ACSL [2018-07-23] Avoid removing cast of void ptr used as
argument of function expecting a ptr with known size. Fixes #@432
o! Kernel [2018-07-23] Remove completely outdated module Dataflow.
Deprecated since 3+ years. Use Dataflow2 instead.
-* RTE [2018-07-23] Stop generating spurious \initialized alarms.
Fixes #@429
-* Kernel [2018-07-06] Respect relative order of labels and ACSL annots.
Fixes #@524
o* Ptests [2018-07-02] Do not keep oracles for empty stderr. Fixes #@402
-*! ACSL [2018-07-02] introduce ACSL operators \le_double, \ge_double, ...
in addition to \le_float, \ge_float, ... Remove overloading of
\le_float that made it accept double as arguments. Fixes #@502
- Eva [2018-06-28] New option -eva-report-red-statuses listing in
a csv file the properties invalid for some states of the analysis
(as in the "Red Alarms" panel of the GUI).
- Eva [2018-06-25] Release all builtins, including memset and memcpy,
as open-source.
- Eva [2018-06-15] When a cvalue builtin is used, other domains use the
frama-c libc specification to interpret the call without losing
too much information.
- Eva [2018-06-14] The variables from the frama-c libc are no longer
shown in the initial state print.
- Eva [2018-06-11] Improved precision of string builtins for strlen,
strchr and memchr.
- Eva [2018-04-25] Renamed option -wlevel into -eva-widening-delay. New
option -eva-widening-period to control the number of iterations
between two widenings.
- Eva [2018-04-25] New propagation strategy that allows unrolling loops
even when the slevel has been exceeded. Unroll the N first loop
iterations via the global option -eva-min-loop-unrolling N or via
specific code annotations /*@ loop unroll N; */. The new strategy
may affect analyses even without loop unrolling.
############################################
Open Source Release 17.1 (Chlorine-20180502)
############################################
- Libc [2018-07-05] Fix C++ compatibility for Frama-Clang plug-in
############################################
Open Source Release 17.0 (Chlorine-20180501)
############################################
- Eva [2018-04-25] Added scripts and templates to help automate case
studies (in $FRAMAC_SHARE/analysis-scripts)
-* Typing [2018-04-23] Stronger checks w.r.t. implicit conversions in
function pointers (must have compatible types) and assignments
(modifiable lvalues). Fixes #@479
- Kernel [2018-04-23] Added option -inline-calls for syntactic inlining
-* Kernel [2018-04-19] Avoid crash when re-declaring a function with
formals after it has been called without any. Fixes #@454
- Kernel [2018-04-13] Deprecate option -warn-decimal-float in favor of
warning category parser:decimal-float
- Kernel [2018-04-13] More possible statuses for warning categories.
Fixes #@486
o Kernel [2018-04-13] Change Cil.typeHasAttributeDeep into
Cil.typeHasAttributeMemoryBlock. Fixes #@489
o* Logic [2018-04-11] properly reset logic environment in case of typing
errors. Fixes #@326
- Eva [2018-04-10] Interpret the logic constants \pi and \e.
- Eva [2018-04-06] Initialization of volatile pointers now keeps the
base addresses of the pointer (with arbitrary offsets).
- Eva [2018-04-06] Fix the initialization of local volatile variables,
which can always have any value.
- Eva [2018-04-06] In the logic, interpret the ACSL function \sign and
the constructors \Positive and \Negative.
- Metrics [2018-04-05] When the value coverage is computed, also shows the
total number of statements by function in the filetree of the Gui.
- Gui [2018-04-04] Added Preferences menu (shortcut: Ctrl+P) to set
themes for property bullets and external source editor
o Lib [2018-03-30] New Rich_text module to create message with tags
o! Kernel [2018-03-30] Never or rarely used Log functions have been
removed or deprecated
- Eva [2018-03-15] Avoid enumeration on values with too many bases —
fixes a performance issue.
- Gui [2018-03-07] The preconditions of a function call can now be
displayed before the call statement itself (click on status
bullets with '+' or '-' to unfold/fold them)
- Typing [2018-03-02] Support for CERT EXP46-C
- Eva [2018-03-01] Fix a soundness bug in the equality domain: do not
infer incorrect equalities between incomparable pointers,
or between -0. and +0.
- Eva [2018-02-26] deprecate option -val-warn-on-alarms in favor of
warning category alarm
- Kernel [2018-02-26] deprecate option -continue-annot-error in favor of
warning category annot-error
-! Kernel [2018-02-26] introduce warning categories, with various
possible behaviors. Refactor management of debug categories
-* RTE [2018-02-23] Do not emit spurious 'idx < 0' assert
on gcc-style FAM. Fixes #@393
-* Kernel [2018-02-23] Handle anonymous struct/union init. Fixes #@376
- Eva [2018-02-22] Equalities can be propagated through function calls.
New options -eva-equality-through-calls[-function] to decide
(globally or by function) which ones are kept from the caller.
- Eva [2018-02-21] When an lvalue lv is assigned or leaves the scope,
the equality domain tries to replace lv by an equal term (if any)
in the expressions depending on lv (instead of removing them).
o! Occurrence [2018-02-20] Removing Db API for Occurrence plug-in. Calls to
!Db.Occurrence should be replaced by calls to Occurrence.Register.
o! Impact [2018-02-20] Removing Db API for Impact plug-in. Calls to
!Db.Impact should be replaced by calls to Impact.Register.
o! Users [2018-02-20] Removing Db API for Users plug-in. Calls to
!Db.Users should be replaced by calls to Users.Users_register.
- Eva [2018-02-13] Removed *_alloced_return base created for functions
without body that return pointers. Such bases were imprecise
and could be unsound in corner cases.
- Eva [2018-02-08] Shifts of addresses now create garbled mixes (as any
other arithmetic operation).
- Logic [2018-02-07] Ghost code now supports /@ ... @/ annotations
- Eva [2018-02-06] By default, do not emit pointer_comparable alarms for
non pointer operations. Always compute {0;1} for non pointer
comparisons involving incomparable addresses.
- Eva [2018-02-01] Warn about unsupported allocates clauses.
- Eva [2018-01-30] The subdivision of evaluations (through the option
-val-subdivide-non-linear) can subdivide the values of several
lvalues simultaneously (on expressions such as x*x - 2*x*y + y*y).
- Kernel [2018-01-24] Better renaming of variables in case of name
collision.
o! Kernel [2018-01-24] Keep information about syntactic scope of local
static variables. Accessed through
Globals.Syntactic_search.find_in_scope.
-! Eva [2018-01-24] Renamed option -val-malloc-returns-null to
-val-alloc-returns-null, which also applies to realloc builtins.
- Kernel [2018-01-16] Added option -json-compilation-database to help with
preprocessing. Requires yojson during Frama-C compilation.
- Eva [2018-01-15] New function post_analysis in abstract domains,
called at the end of the analysis.
- Eva [2018-01-11] The Simple_memory functor lets builtins interpret C
functions from the value of arguments to the result value.
- Eva [2018-01-11] Evaluate the preconditions of the functions for which
a builtin is used; builtins do not emit alarms anymore.
-! Kernel [2018-01-11] Alarms Logic_memory_access and Valid_string, that
were only emitted by Eva builtins, are removed.
-* ACSL [2017-12-14] Reinforce rejection of void* pointer types in the
arguments of ACSL built-in constructs related to memory blocks
and pointer dereferencing.
-* ACSL [2017-12-14] Reinforce rejection of implicit casts from array
types to pointer types in the arguments of ACSL built-in
constructs related to memory blocks and pointer dereferencing.
-* Kernel [2017-12-13] Clean up typechecking environment when dropping
side-effects (in sizeof et al.). Fixes #@430
o! Kernel [2017-12-13] Old Cil.isCharType renamed as Cil.isAnyCharType.
New Cil.isCharType is now only true for plain char, neither signed
nor unsigned. Derived functions (isCharPtr et al.) also updated
- Eva [2017-12-12] Fix a crash when using -val-stop-at-nth-alarm.
- Eva [2017-12-07] Eva complies with option -warn-special-float, and
propagates or warns on NaN and infinite values accordingly.
-! Kernel [2017-12-07] Option -warn-not-finite-float renamed into
-warn-special-float and extended (accepts non-finite/nan/none).
- Kernel [2017-12-07] Make some typechecking warnings controllable with
-kernel-msg-key keys.
- Eva [2017-12-07] New option -val-skip-stdlib-specs, set by default.
When analyzing the body of a function from Frama-C's standard
library, specifications will be skipped.
- Eva [2017-11-28] New builtins for the single-precision mathematical
functions fmodf, cosf, sinf and atan2f.
-! Eva [2017-11-16] In the log, messages on preconditions are now
reported with the location of the call site.
o! Eva [2017-11-09] The Fval module now supports NaN and infinite values.
Major API changes in Fval, Ival and Cvalue.V (regarding casts,
mostly)
-o Eva [2017-11-09] Option -all-rounding-modes has been removed
-* Eva [2017-11-09] Fix bugs in builtins for cos and sin. The results
may be less precise than previously
- Eva [2017-11-09] Various improvements in the handling of
floating-point variables: evaluation of \is_finite, computation
of the bits of a floating-point range, etc
- Eva [2017-11-09] New panel "Red alarms" in the GUI that shows all red
statuses emitted for some states during the analysis. They are not
completely invalid, but should often be investigated first.
-* Eva [2017-10-27] Fix bug in the handling of non-explicitly volatile
fields inside volatile structs or unions
##########################################
Open Source Release 16.0 (Sulfur-20171101)
##########################################
-* Eva [2017-10-27] Fix bugs when evaluating \ìnitialized, \dangling
and \separated on addresses of bitfields
-* Eva [2017-10-27] Fix bug in the handling of non-explicitly volatile
fields inside volatile structs or unions
- RTE [2017-10-27] add option -rte-initialized to generate assertions
over read accesses to potentially uninitialized locations.
-* RTE [2017-10-16] Fix bounds of alarms emitted when downcasting to
bitfields (issue #?2314)
o Makefile [2017-10-13] add gui-byte target to only build bytecode GUI
o Kernel [2017-10-11] sizeof() and alignof() applied to a function can now
be rejected when the compiler does not support this construct,
depending on the fields sizeof_fun and alignof_fun of the machdep
-* Kernel [2017-10-11] More thorough checks on l-values with function type.
Non-sensical expressions are now rejected at parsing type.
- Eva [2017-10-10] Uses assigns clauses to over-approximate the effects
of assembly statements. Warns if no assigns clause is provided.
-* Eva [2017-10-10] Fixes a performance issue in offsetmaps, that occured
when reading or copying values smaller than cells in large arrays.
- Eva [2017-10-10] The backward propagation tries to reduce integer
values by considering separately the bounds of their intervals.
-* Eva [2017-10-10] Fixes an optimization issue where the reduction by a
loop invariant just after widenings could impede the convergence.
-* Eva [2017-10-10] Fixes a soundness bug where a loop invariant could be
wrongly proved correct in some marginal cases.
+ Slicing [2017-10-05] File slicing_types/*.ml moved into slicing subdir.
- Gui [2017-09-13] In the filetree, the filter menu appears on a right
click on the header, while a left click sorts the tree.
- Metrics [2017-09-13] In the Gui, shows the percentage and the number of
dead statements (when computed) for each function of the filetree.
-! Callgraph [2017-09-01] Option -cg-init-roots replaced by -cg-service-roots
(almost equivalent); new options -cg-function-pointers (ignore
function pointers; unsound) and -cg-roots (compute subgraphs).
o! Eva [2017-09-01] In abstract domains, compute_using_specification is
replaced by logic_assign, that interprets one \assigns clause.
Complete specification are now interpreted through successive
calls to evaluate_predicate, reduce_by_predicate and logic_assign.
- Eva [2017-09-01] Various precision improvements in the interpretation
of the behaviors of a specification.
-* Kernel [2017-08-31] Fixes configure script on bytecode only architecture.
Initial version of the patch by Debian. Fixes #2325
-* Kernel [2017-08-31] Fix various typos in source code and user messages.
Patch by Debian. Fixes #2323
-! Sparecode [2017-08-31] Rename option -rm-unused-globals to
-sparecode-rm-unused-globals.
o! ACSL [2017-08-24] Refactor handling of logic labels in AST
-! Eva [2017-08-03] Fix soundness (resp. precision) bug on big-endian
(resp. little-endian) architectures. This bug triggered on
low-level code, typically when using bitfields
-* Kernel [2017-08-03] Strip bitfield attribute when performing integral
promotions on bitfields of size short or char. Fixes incorrect
attributes on the resulting expression.
-! ACSL [2017-08-03] Explicitely disallow /* and */ in ACSL annotations.
Allows to re-use logic parser for parsing annotations in external
files that can use /* ... */ as comments. As a consequence,
expressions like y/*p are thus rejected, but this was already the
case when -pp-annot is activated (default for .c files) and can
be fixed easily in y / *p (as it is pretty-printed)
-* Kernel [2017-07-29] Fix unmarshalling of save files that contain more
than 4Gb of uncompressed data. Patch from TIS-interpreter.
-* Eva [2017-07-27] Fix performance issue with the equality domain.
-! Kernel [2017-08-28] Fix invalid eids on code generated through loop
-! Slicing [2017-08-28] Fix invalid eids on code generated through option
-slicing-level >= 2
-! Eva [2017-07-28] Fixed memory leak with option
-val-subdivide-non-linear
o! Slicing [2017-08-01] Removing Db API for Slicing plug-in. Calls to
!Db.Slicing should be replaced by calls to Slicing.Api.
-o! Slicing [2017-07-27] Removing deprecated '-slice-option' and related
!Db.Slicing.Projet.print_exported_project. Minor changes into
!Db.Slicing.Projet.extract.
o! Scope [2017-07-27] Removing Db API for Scope plug-in. Calls to
!Db.Scope should be replaced by calls to Scope.
o! Report [2017-07-24] Removing Db API for Report plug-in. Calls to
!Db.Report.print should be replaced by calls to
Report.Register.print.
- RTE [2017-07-17] Emits overflow alarms on unsigned left shift when
-warn-unsigned-overflow is enabled.
- Eva [2017-07-17] Emits overflow alarms on unsigned left shift when
-warn-unsigned-overflow is enabled.
- Kernel [2017-07-10] Composite types are now required to have equal tags
as per the C standard; no more support for isomorphic structs.
- Eva [2017-07-01] In the GUI, the "Values" panel displays the values
computed by using the properties inferred by all enabled domains.
-! Eva [2017-06-30] Better handling of function alloca(), via builtin
Frama_C_alloca.
-* Eva [2017-06-28] The cvalue states saved after each statement are now
properly deleted when an Eva parameter is changed in the GUI.
o Eva [2017-06-26] New functor in domains/simple_memory.ml to build a
complete domain from a value abstraction. The abstract states link
each scalar variable of a program to an abstract value.
- Eva [2017-06-26] New sign domain for demonstration purposes only.
-* Kernel [2017-06-09] Parser now handle mixed concatenation of
string and wstring. Fixes #@1467
- Eva [2017-06-07] The subdivision of the evaluation of non-linear
expressions (through the -val-subdivide-non-linear option) also
applies to the new evaluations requested by the equality domain.
-* Eva [2017-06-14] Fix a crash when downcasting pointer values with
the option -val-warn-signed-converted-downcast enabled.
-* Eva [2017-06-14] Fix missing alarms when downcasting pointer values.
-o Eva [2017-05-24] The argument ~with_alarms for functions of Db.Value
is now optional, and will be removed in a later version.
* Eva [2017-05-24] Fix soundness bug in string builtins where some
invalid offsets did not generate alarms.
- Eva [2017-05-22] Removes all effects of the special functions
Frama_C_[dump|show]_each on the analyses: no alarms are emitted
and the states are never reduced on these calls.
- Eva [2017-05-22] Frama_C_dump_each prints the state of each available
domain whose log category is enabled.
- Eva [2017-05-22] New directive Frama_C_domain_show_each prints the
internal properties about the arguments inferred by each available
domain whose log category is enabled.
o! Eva [2017-05-22] Abstract domains have to provide a log category and
a function show_expr that prints the internal properties inferred
about an expression.
- Kernel [2017-05-18] Added option -print-return to inline gotos to return
- RTE [2017-05-12] add -warn-not-finite-float for checking
that infinite and NaN floats are not produced.
-! Kernel [2017-05-17] qualifiers are dropped from the return type of
functions, as they make no real sense
-* Kernel [2017-04-27] stop removing const attribute on local variables.
Fixes #@301
o! Kernel [2017-04-27] Remove needless repetition of declared logic labels
in Tapp and Papp nodes. Fixes #@274
o! Kernel [2017-04-27] Completely separate types between Cil_types and
Logic_ptree, removing needless polymorphism
- Eva [2017-04-06] More precise evaluation of \initialized and
\dangling predicates.
##############################################
Open Source Release 15.0 (Phosphorus-20170501)
##############################################
-* Eva [2017-05-08] Fix widening in the gauges domain, in particular with
nested loops and pointers that change base address through
iterations
-* Eva [2017-04-25] Perform widening in the symbolic locations domain.
-* Eva [2017-04-24] Fixes a crash when backward-propagating an imprecise
value on a 32-bits floating point addition. A non-single precision
value was erroneously returned.
-* Eva [2017-04-05] Fixes a crash with the -val-subdivide-non-linear
option, on subdivisions of evaluations involving pointer values.
-! Eva [2017-03-31] Renamed dynamic allocation builtins for
improved consistency. In particular, Frama_C_alloc_size
becomes Frama_C_malloc_fresh.
- Eva [2017-03-31] New option -val-builtins-list
-* Scope [2017-03-31] Fix bug in the functions of Db.Scope in presence of
alarms refering to volatile memory locations, or to variables
that leave scope. Also impacts Eva option -remove-redundant-alarms
- Eva [2017-03-31] Activate option -remove-redundant-alarms by default.
- Inout [2017-03-28] Option -inout-callwise is now always active, and will
be removed in a later version
-* Inout [2017-03-28] Prevent formal variables of functions with only a
specification from leaking into results
- Kernel [2017-03-28] Dynlink is now mandatory, no degraded static mode.
o! Eva [2017-03-17] Incompatible API changes in module Cvalue.Model.
Functions named 'unspecified' have been renamed into
'indeterminate', and some arguments have been removed.
o! Gui [2017-03-10] Signature change for constructor
Pretty_source.PVDecl
-! Kernel [2017-03-10] Explicit AST nodes to mark local variables
initialization.
-! Kernel [2017-03-10] Better handling of VLA (use explicit function calls
to mark deallocation of VLA at appropriate program points)
-* Callgraph [2017-03-10] Fixes inverted callers/callee in indirect calls
-! Eva [2017-03-09] Option -val-show-progress is now unset by default
-* Eva [2017-03-08] Fix bug #2277. The initial state of the analysis
now depends on all relevant options, including kernel options
-warn-...
-! Variadic [2017-03-08] Change of command line argument names for the
plugin Variadic. The new names are more expressive and avoid
confusions with the plugin Value. Use -variadic-translation or
-variadic-no-translation instead of -va or -no-va.
-! Value [2017-03-07] Support for the legacy value analysis has been
abandoned, Eva is now always active. Option -no-eva has been
removed.
-* Eva [2017-03-07] Unsound support for recursion, through option
-val-ignore-recursive-calls. The support of recursion through
the use of 'assigns' clauses, previously available in Value,
was unsound and has been removed
-! Kernel [2017-03-01] Zarith library is now required
-* Kernel [2017-02-24] Fix crash when loading a saved file without a plug-in
which has previously emitted a status with a tuning parameter.
- Eva [2017-02-06] New (internal) mechanism to handle C functions'
return values. Messages now mention \result<foo> for the
value returned by 'foo'.
- Variadic [2017-02-08] The plugin is now enabled by default. Use the
option -variadic-no-translation to keep the original behaviour.
The specification generated for the fprintf function family is
now more accurate.
- Kernel [2017-01-26] New option -print-libc, to expand include directives
for files in the Frama-C stdlib (no longer expanded by default).
-* Obfuscator [2017-01-19] Fix typo in help message (bts #2269).
- Kernel [2017-01-09] Bash completion for Frama-C options. See #@154.
-* Kernel [2016-12-09] Fixes oneret normalization in presence of
statement contract and absence of return. See #@255 and #2235.
- Kernel [2016-12-06] New option -print-machdep (help group).
- Rte [2016-11-25] Remove option -rte-all.
-* Cil [2016-11-20] Pointer subtractions with arguments of incompatible
types are now refused. The resulting expression is typed as
ptrdiff_t instead of int.
- Value [2016-11-18] Widen hints directives @widen_hints now accept
arbitrary l-values (evaluated at analysis time) in place of
variables.
-* Kernel [2016-11-17] Fixed some issues with #pragma pack() behavior,
in both GCC and MSVC machdeps. Also fixed some related issues
with __aligned__ and __packed__ attributes (including bts #2249).
-o Kernel [2016-11-17] Utility API for checking volatile attribute in Cil.
- Metrics [2016-11-17] Programmatic API for some functions via Metrics.mli.
- Kernel [2016-11-07] New option -no-autoload-plugins (equivalent to old
-no-dynlink); mostly for internal use.
-! Kernel [2016-10-19] Stricter verification for extern, static and inline
specifiers (support for CERT DCL-36-C coding rule)
o* Eva [2016-10-22] Functions Db.Value.fun_set_args and
Db.Value.globals_set_initial_state are now compatible with Eva.
###########################################
Open Source Release 14.0 (Silicon-20161101)
###########################################
-*! Eva [2016-10-29] Fix soundness bug on statements with RTE or
programmatically-added user assertions (bts #2258). This
leads to minor changes in the way states are propagated when
all slevel has been consumed. Also, consolidated states now
return the abstraction before any reduction by assertions or
alarms.
-* Eva [2016-10-20] Fix bug in the bitwise domain, on some applications
of the & and | operators
- Value [2016-10-20] New (experimental) option -val-builtins-auto, to
automatically replace known C functions by builtins. Will
be set by default in Phosphorus.
-* Value [2016-10-19] Frama_C_cos and Frama_C_sin builtins are now
precise by default. The former Frama_C_cos / Frama_Csin_precise
have been removed
-* Kernel [2016-10-18] Fix bug when pretty printing an ACSL term
"divisor / *p" (bts #2250).
- Eva [2016-10-18] New experimental Gauges domain, that relates
integer variable to loop counters.
-! Kernel [2016-10-15] Fix major bug in the backward dataflow of module
-! Scope [2016-10-15] Fix bug that might lead to unsoundness and / or
looping in 'Datascope' functionality (#!235)
-* Eva [2016-10-11] Prevent incorrect reductions on memory locations
with volatile qualifier
-! Value [2016-10-11] Option -val-warn-copy-indeterminate is now set by
default. See command-line help if you want to deactivate it.
- Kernel [2016-10-07] Fix bug that may occur when modifying several times
command line-options taking functions as argument (issue #@109)
-! Libc [2016-10-07] Functions in share/libc.c have been inlined into
the proper .c files under share/libc
- Eva [2016-10-07] More systematic backward-propagation between
actual parameters and formals
- Nonterm [2016-10-05] overall increase in precision, especially on
compound statements (if, switch, loops...). Verbosity has been
decreased
- Nonterm [2016-10-05] New options -nonterm-ignore f1,..,fn (to
ignore calls to functions f1,..,fn) and -nonterm-dead-code
(to warn about syntactically dead code)
- Value [2016-09-23] Extended support for syntactic widening hints
(@widen_hints - see the Value user manual for more details)
- Value [2016-09-20] New builtins for string-related functions:
Frama_C_strlen, Frama_C_strchr, Frama_C_strnlen,
Frama_C_memchr and Frama_C_rawmemchr
- Value [2016-09-20] valid_string and valid_read_string predicates
are now evaluated by Value
-* Eva [2016-09-18] Fix bug in equality domain, after assignements
lv = e where the modified locations intersect those involved in
computing lv
-* Eva [2016-09-18] fix performance bug in the equality domain,
especially visible on programs with many local variables.
o! Kernel [2016-09-16] Rename some types of the logic AST for more coherence
- Kernel [2016-09-13] Support for C11 redefinition of typedefs
- Kernel [2016-09-06] Deprecated Pretty_utils.sfprintf,
use Format.asprintf instead.
-! Logic [2016-08-31] Refactoring of ACSL extensions + allow extensions
in loop annotations
-! Libc [2016-08-29] New file share/libc/string.c, with simple
implementations for C99 functions defined in string.h.
Duplicate implementations were removed from share/libc.c.
-* Kernel [2016-08-12] Fix bug #2239 about unsoundness of callgraph's
services computation (bug introduced in Frama-C Magnesium).
o! Kernel [2016-07-26] Suppress return_stmt field of kernel_function type.
Use Kernel_function.find_return instead.
-* Kernel [2016-07-31] Scripts that use Gtk can again be loaded using
option -load-script (bug report:
http://stackoverflow.com/questions/38677256/)
-! From [2016-07-28] Removed options -experimental-path-deps and
-experimental-mem-deps.
-! Value [2016-06-26] Do not compute the sizeof of a function when
evaluating a function call through a pointer. This avoids some
warnings in MSVC mode.
-! Value [2016-06-26] Option -val-show-time has been removed. Options
-val-show-perf or -val-flamegraph offer more information
- Value [2016-06-26] New option -val-flamegraph, to dump information about
analysis times as a Flamegraph
-* Value [2016-06-26] Option -val-show-perf now properly takes into
account the time taken by the main function itself (without its
callees)
-! Kernel [2016-06-14] OCamlGraph is no longer packaged within Frama-C,
and must be installed to build Frama-C from source
o! Kernel [2016-06-14] Remove class Filecheck.check from API.
Use Filecheck.check_ast that provides the correct encapsulation.
- Eva [2016-06-11] Various improvements to experimental Apron domain
- Value [2016-06-11] Pointers to functions with an incompatible type are
now handled in a more stringent manner. Previously, arguments
with incompatibles types but equal size were reported with an
orange status. Now, any mismatch (e.g. int/float or
signed/unsigned) causes a red alarm.
-* Eva [2016-06-06] Setting option -val-warn-copy-indeterminate now
forces lvalue copies to perform a full evaluation. This includes
converting the copied value to the proper type, and emitting
alarms if it is indeterminate. This option should not be set
for memcpy-like functions, or for functions that copy bits
of pointers
-! Value [2016-06-05] API changes in modules Lmap and Cvalue.Model. All
occurrences of `Map in returned value should be replaced by
`Value
-! Value [2016-06-03] Several warnings emitted by Value are now properly
prefixed by [value] instead of [kernel]
- Value [2016-05-31] New message key 'garbled-mix', to track garbled mix
generated during the analysis
-* Value [2016-05-30] Garbled mix created when analyzing assigns / from
clauses are now tagged as having "Library function" origin
- Value [2016-05-30] New option -val-warn-on-alarms, which governs
whether alarms are printed as warnings or text.
-* Kernel [2016-05-23] Side-effect free instructions such as 'e;' are now
translated as 'tmp = e;' instead of 'if (e) {}' (which was
incorrect when e did not have a scalar type)
- Eva [2016-05-27] Improvements to option -val-subdivide-non-linear for
high number of subdivisions
-* Value [2016-05-23] Option -val-show-initial-state has been removed.
Instead, -value-msg-key=-initial-state can be used
- Value [2016-05-23] New message key final-states, that can be used
to deactivate the printing of the abstract states at the end of
each function
o* Kernel [2016-05-18] Fixes merging of contract when using
Annotations.add_code_annot
- Rte [2016-05-15] New option -rte-pointer-call, to generate
annotations for calls through function pointers
-* Value [2016-05-15] Fix crash when extracting bits of a long double
value. (Issue 92 on TIS-interpreter, reported by ch3root.).
- Value [2016-05-14] Builtins are now available for malloc:
Frama_C_alloc_size (one new base each time, may diverge) and
Frama_C_alloc_by_stack (one base by stack, may end up performing
weak updates).
-! Cil [2016-05-12] Conversions between a bit-field lvalue and the
(integral) type of the bitfield are now always made explicit
through casts; the attribute FRAMA_C_BITFIELD_SIZE is present on
the type of the cast if needed.
- Libc [2016-05-03] Implementations of some functions of the standard
library are now available in share/libc/*.c
-* Makefile [2016-04-27] Fix compilation of plug-ins which depends on
another plug-ins when compiled outside Frama-C.
- Gui [2016-04-24] Different filters for user assertions and RTEs
are now available.
- Eva [2016-04-05] Improvements to option -val-subdivide-non-linear on
expressions such as x*x+y*y, or t[i*i].
- Eva [2016-04-01] Support for options -warn-signed-downcast and
-warn-unsigned-downcast.
-! Kernel [2016-03-31] OCaml version greater than or equal to 4.02.3 required.
o Makefile [2016-03-31] Warnings and warn-error are activated only if a file
.for_devel is present along side the Makefile (also for plugins)
o! Kernel [2016-03-29] Functions Integer.pgcd and Integer.ppcm are now
guaranteed to return a positive result.
#############################################
Open Source Release 13.0 (Aluminium-20160502)
#############################################
- Value [2016-04-19] Support for evaluation of predicate
\valid_read_string on constant strings.
-* Sparecode [2016-04-11] Fix crash when an entire function becomes spare.
(issue #@157).
- Eva [2016-03-30] New experimental domain that improves precision on
bitwise operations, for example on pointers. Activated by option
-eva-bitwise-domain.
o! Value [2016-03-30] API change in functor Lmap.Make.
- LoopAnalysis [2016-03-29] New plug-in 'LoopAnalysis' which estimates loop
bounds and -slevel-function parameters. Invoked using option
-loop.
-* ACSL [2016-03-30] Fixes precedence uncompliance within ACSL Manual of
some bitwise operators and more aggressive checks of consistent
relation chains.
-* Metrics [2016-03-24] Fix list of undefined functions; functions that
are never called were not reported.
-* Metrics [2016-03-24] Fix option -metrics-value-cover when option
-metrics-libc is not set.
-! Metrics [2016-03-24] Global variables defined in Frama-C standard library
are no longer counted when option -metrics-libc is not set.
- Variadic [2016-03-17] New plug-in 'Variadic' which translates variadic
functions, calls and macros to allow analyses to handle them more
easily. Invoked using the -va option.
- Nonterm [2016-03-09] New plug-in 'nonterm' for detection of definite
non-termination based on Value.
!o Kernel [2016-02-29] Do not raise Invalid_arg and Failure exn but use
custom exceptions instead. Prevents warning 52 in OCaml 4.03.0
Functions raising new exceptions are:
- Db.From.find_deps_term_no_transitivity_state
- Db.Interp.*
- Kernel [2016-02-24] New option -<plugin>-log to copy the output of
plug-ins into one or several text files
(described in the User Manual).
-* ACSL [2016-02-23] Fixes implicit logic label generation on recursive
definitions. Fixes bug #2158.
- Eva [2016-02-22] Experimental domain dedicated to storing and
learning information from syntactic equalities
(option -eva-equality-domain).
- Eva [2016-02-22] Improvements to backward propagation, on memory
accsses and bitwise operations.
-* Value [2016-02-17] Fix handling of functions without a body that
return a pointer. The pointer was aligned on an incorrect
frontier.
-* Value [2016-02-17] Fix crashes when analysing a function (without a
body) that returns an empty struct, or a pointer to an empty
struct. Bugs reported by TrustInSoft.
- Kernel [2016-02-10] Registering twice the same machdep is now accepted.
- Cil [2016-02-10] Add proper support for empty aggregate initializers
in GCC mode.
- Cil [2016-02-08] Operator ! applied to constant expression is no
longer simplified when not required.
- Value [2016-02-05] Informative messages about inactive behaviors are
now emitted only at verbosity level 2.
- Value [2016-02-05] Messages on ACSL predicates with Unknown/Invalid
status are now emitted with a 'warning' severity, consistently
with the emission of alarms. 'True' statuses are hidden if option
-val-show-progress is unset.
- From [2016-02-03] Option -from-verify-assigns takes into account
direct and indirect dependencies.
- Value [2016-02-03] Distinguish direct and indirect dependencies in
'from' clauses to compute the effecst of an 'assigns/from' clause.
See section 7.2 of the manual.
-* Libc [2016-02-02] Fix specifications of memchr and strncpy.
-* ACSL [2016-01-27] Fixes example of logic label use. Fixes bug #2203.
-* Logic [2016-01-17] Meaningless assigns clauses are now rejected more
aggressively. Fixes bug #1790.
o Kernel [2016-01-08] Several incompatible changes in module Property.
- Kernel [2016-01-08] Automatic generation of assigns from GCC's extended
-* Value [2016-01-06] Evaluation of ACSL ranges takes into account option
-safe-arrays. In particular t[..] remains within the bounds
of t. Fixes bug #!1639.
-* Value [2016-01-05] Take into account 'volatile' qualifiers on struct
typedefs, which were previously ignored. Fixes issue #@102.
- Value [2016-01-03] Support for \valid_function predicate during
evaluation.
- ACSL [2016-01-03] New predicate \valid_function, requiring the
compatibility between the type of the pointer and the function
being pointed.
-* Eva [2016-01-01] Fixed some bugs related to 0. vs. -0. in conditions.
- Eva [2016-01-01] More aggressive reductions in complex conditions
such as if(a+3 < 10).
-*! Value [2016-01-01] Reimplementation of all the upper layers of the
plugin. Compatibility with the legacy version is almost complete,
save for some text messages and a few functions of the API.
Use option -no-eva to switch back to the legacy version.
Changelog entries labelled 'Eva' refer to this new version.
Entries labelled 'Value' apply to both versions.
o! Value [2015-12-02] Base.base_max_offset has been removed. Part of its
functionality is still available via Base.valid_range, whose
return type is now more expressive.
-* RTE [2015-12-09] Fix unsoundness for overflows on binary operations
when one or two operands were constant.
-* RTE [2015-12-09] Fix unsoundness on unary minus expressions when
option -rte-trivial-annotations is active.
-! Cil [2015-12-02] Changes in the handling of incomplete structs and
zero-length arrays. Initialization of incomplete (completely
undefined) structs is now duly rejected. Several compiler
extensions to the C99 standard (empty initializers,
zero-length arrays, etc.) now require a GCC or MSVC machdep
(e.g. -machdep gcc_x86_32).
-! Cil [2015-12-02] Better handling of C99 flexible array members (FAMs).
Static initialization of FAMs (a GCC extension) is no longer
supported.
o! Gui [2015-12-01] Refactor GUI Helpers.
(Toolbox and (partially) Gtk_helper moved
to Wutil,Widget, Wform, Wtext and Wtable).
-! Value [2015-11-26] Widening hints now includes signed and unsigned
limits for the bitsize of the value being widened, but does not
include arbitrary limits anymore. The convergence is generally
faster but results may be more or less precises depending on
the case.
-! Value [2015-11-26] Better propagation strategy for nested loops.
Results are usually much more predictable (and often more
precise) when the loops are not fully unrolled by slevel.
-! Makefile [2015-11-26] Target 'make rebuild' has been renamed into
'make clean-rebuild'.
-* Value [2015-11-24] The preconditions of functions overridden by builtins
no longer receive an 'Unreachable status for calls within dead
code: the specification is ignored everywhere. Fixes bug #!1956.
-! Cil [2015-11-23] Incorrect return statements (return void on non-void
functions and vice-versa) now generate errors instead of warnings.
- Value [2015-11-23] New option -val-warn-undefined-pointer-comparison.
- ACSL [2015-11-23] Add built-in operators for lists.
- ACSL [2015-11-23] Add notation '{ x, y, z }' for defining sets.
o Makefile [2015-11-19] New option PLUGIN_EXTRA_DIRS for multi-dir plugins.
-* Kernel [2015-11-18] do not crash when loading statuses depending from
non existing parameter. Fixes issue #!2181.
o! Makefile [2015-11-12] Get rid of FRAMAC_MAKE variable. Use FRAMAC_INTERNAL
instead for distinguishing internal and external mode.
- Kernel [2015-10-28] Option -collect-messages is obsolete and will be
removed in a future version; messages are now always collected.
o! Kernel [2015-10-19] Removed function State_selection.list_state_union.
Use State_selection.of_list or State_selection.list_union instead.
-* Kernel [2015-10-15] Avoid comment duplications on generated code.
-* Kernel [2015-10-15] Comments are preserved even when loops are unrolled.
Fixes issue #!2176.
-! Kernel [2015-10-15] Option -warn-undeclared-callee changed to
-implicit-function-declaration, which receives an argument
(ignore, warn or error) specifying what to do when an undeclared
function is called.
-! GUI [2015-10-15] Signature change for function
Design.register_source_highlighter; the first argument of the
callback has now type Design.reactive_buffer, which can be coerced
back to a GSourceView2.source_buffer using method buffer.
- Value [2015-10-13] During the evaluation of ACSL 'assert', intermediate
statuses (e.g. True, then Unknown, then True) are now reported
in the console.
o! Kernel [2015-12-09] API change for function Alarms.register. See .mli
for details.
- Cil [2015-10-09] Add support for parsing digraphs.
o! Cil [2015-10-09] Buggy record Cil.miscState has been removed.
Customization must be done directly in Cil_printer.state.
- Value [2015-09-30] Better precision for calls through function pointers
when multiple functions are possible. The abstract state now
contains the information of which function was called.
o! Value [2015-09-20] Functions filter_le_ge_lt_gt_* have been renamed
into backward_comp_*. Evaluation and reduction functions
for comparisons now use and return dedicated types, in
Abstract_interp.Comp.
- Cil [2015-09-20] Double pointer casts on the NULL pointer are now
simplified.
-! Cil [2015-09-20] Typing within comparisons is now more strict,
or made more explicit through casts.
- Kernel [2015-09-20] The untyped AST is no longer removed by basic program
transformations such as loop unrolling.
o Ptests [2015-07-29] New EXEC: directive.
- Kernel [2015-07-01] New options -then-last and -then-replace.
- Kernel [2015-07-01] New option -remove-projects.
- Kernel [2015-06-30] New option -set-project-as-default.
#############################################
Open Source Release 12.0 (Magnesium-20151002)
#############################################
o! Kernel [2016-01-03] Modules Dataflow is deprecated, and will be removed
in Aluminium. Module Dataflow2 offers a very similar but simpler
API.
- Doc [2015-11-16] Fixed typo in the manual (Thx Mihaela Sighireanu).
-* Kernel [2015-10-12] Fix clearing of old statuses and hypotheses when a
new status is emitted or an annotation is removed.
-* Libc [2015-09-29] Removed obsolete file machine.h (along with other
similar files) from the Frama-C share folder. Fixes bug #2171
-! Kernel [2015-09-07] Removed support for OCaml 3.12.1
- Value [2015-09-03] Assertions containing \at(P, L), where L is a C
label, can now be evaluated. Evaluation is done once Value has
run; thus, it ignores option -slevel.
-* Value [2015-09-03] pointer_comparable alarms are now emitted with
arguments properly cast to void* or void (*)().
- Value [2015-08-10] The alarms raised when evaluating a global
initializer that leads to an undefined behavior are now marked
with an "Invalid" status.
- Report [2015-08-10] Reports in csv format now honor option
-report-specialized (previously, preconditions at a
callsite were always skipped).
-* Libc [2015-08-26] Fix bug in the specifications of readir, opendir,
closedir and fopen functions, that would cause incorrect analysis
in -lib-entry-mode.
- Gui [2015-08-14] When a call statement is selected, the statuses of
the preconditions of the called functions are displayed in the
'information' panel.
o! Gui [2015-08-14] Minor API changes regarding Design.reactive_buffer.
Some values that used to have an option type are now guaranteed
to be present.
- Gui [2015-08-12] Internal ids (for statements, code annotations, etc.)
are now hidden by default. Start the GUI in debug mode if you want
to see them.
-* Gui [2015-08-10] Filenames in the GUI file tree (top-left panel)
are now sorted correctly. Fixes bug #2173.
-! Value [2015-08-03] WIDEN_HINTS directive are now cumulative with
automatically inferred bounds. Fixes bug #876.
-* Cil [2015-08-03] Fix bug #1553, related to nested initialisations
of structures containing pointers.
-! Value [2015-08-03] All plugins that depend on Value, plus Value itself
are now dynamic. Custom plugins must specify in their Makefile the
plugins they depend on (e.g. PLUGIN_DEPENDENCIES:=Inout Value).
-* Cil [2015-07-29] Cil transformation can introduce assertion to ensure
that size expressions in an array declarations evaluated at
program execution time are positive and do not overflow.
o Ptests [2015-07-29] New LOG: directive.
- Value [2015-07-19] Garbled mix origins now include at most one source
location.
- Report [2015-07-19] New option -report-proven to control the display
of proven properties.
- Report [2015-07-19] New export format (.csv), through option -report-csv.
o! Callgraph [2015-07-16] Remove Cil.Callgraph, Db.Syntactic_callgraph and
Db.Semantic_callgraph which are all replaced by the single
plug-in Callgraph. See Changelog_detailled.md for further detail
about this change.
-! Callgraph [2015-07-16] New plug-in callgraph which merges the old
Syntactic_callgraph and Semantic_callgraph plug-ins (now
removed). Either this plug-in uses Value if already computed, or
computes the syntactic callgraph otherwise. This new plug-in
unifies the behavior of its two ancestors. In particular,
the edges of callgraph computed with the help of Value are
now directed in the same way as the syntactic callgraph (was
reversed before) and so the computed services are now
equivalent. Also, the uncalled functions are now displayed
by default. For plug-in developers, the callgraph is easily
accessible via an API (bts #755).
-! Value [2015-07-14] Float operations that are guaranteed to lead
to +/-infty (e.g. x = FLT_MAX*10.) now stop propagation.
Previous behavior was to continue with an imprecise value for x.
- Kernel [2015-07-09] New option -custom-char-annot for changing the
character introducing ACSL annotations (instead of '@').
- Value [2015-07-09] Do not emit pointer_comparable alarms on valid
pointer comparisons involving objects of size 0.
- Value [2015-07-07] The semantics of copying a lvalue has been changed
when a type mismatch occurs between the destination and the copied
value. A bitwise reinterpretation of the value to the destination
type is now performed during the copy.
o! Kernel [2015-07-01] Ival.Float_abstract renamed to Fval.
Fval.inject_r now may raise Fval.Non_finite instead of the old
Float_abstract.Bottom.
- Value [2015-06-29] Option -val-split-return-auto now always split
between NULL/non-NULL pointers.
-* Value [2015-06-26] Check the validity of the operands of the ACSL
operators /, %, << and >> when evaluating a predicate.
o! Value [2015-06-25] Remove duplicate values Ival.singleton_zero and
Ival.singleton_one. Use script sodium2magnesium.sh for automatic
migration.
-* Parsing [2015-06-22] Black-list gcc's builtin macros for logic
pre-processing to avoid warnings for duplication. Fixes bug #2161.
-* Logic [2015-06-15] Fix typing bug when converting into a term an
expression containing a pointer subtraction.
-* Value [2015-06-09] Pointer comparisons using relational operators (<,
>=, etc) between a pointer and NULL is now flagged as undefined.
o! Kernel [2015-06-09] Remove support of plug-ins without .mli.
Fixes bug #!1825.
-* Cil [2015-05-29] Better typing of '?' operator. Fixes bug #2117.
o! Kernel [2015-05-29] Remove long-obsoleted functions Cfg.computeCFGInfo
Cfg.printCfgFilename, and Cfg.printCfgChannel.
- Value [2015-05-28] Functions call using a function pointer are now
treated more leniently when too many arguments are supplied. An
alarm is emitted, but execution continues with the right number
of arguments.
- Value [2015-05-12] Improved reduction by predicate \initialized when
the left argument is a range of locations.
- Impact [2015-05-12] Removed function Db.Impact.slice, that was actually
unrelated to Impact. You can use the functions contained in
Db.Slicing.Select, in particular Db.Slicing.Select.select_stmt,
to obtain the same result.
- Makefile [2015-05-06] Dynamic plug-ins are now declared as Findlib
packages. Use variables PLUGIN_REQUIRES and PLUGIN_DEPENDENCIES.
Loading a plug-in automatically loads all necessary dependencies.
Plugin "MyPlugin" is register under "frama-c-myplugin" package.
-! Kernel [2015-05-06] Dynamic now rely on Findlib. Small changes in API.
Option -load-module can now load any Findlib package and its
dependencies as well.
- Kernel [2015-05-06] Reformulated help messages.
Option -help is more concise.
Option -version only prints version number.
Options -print-xxx uniformized.
New options -plugins, -print-config.
- Value [2015-05-29] Added built-ins for mathematical functions: atan2,
fmod, pow, expf, logf, log10f, powf, sqrtf, floor, floorf,
ceil, ceilf, round, roundf, trunc, truncf.
-* Value [2015-05-03] In -lib-entry mode, allow the generation of initial
states with 0-sized bitfields.
-* Metrics [2015-05-05] Fix computation of global cyclomatic complexity.
Fixes bug #!2089.
-* Libc [2015-04-29] Added ACSL specifications to some standard library
functions, including read, write and realloc. Fixes bug #1939.
- Scope [2015-04-22] Assertions previously removed by
-remove-redundant-alarms are now marked as proven, but remain in
the AST.
- Value [2015-04-22] New GUI panel 'Values', that displays nearly all the
information previously available under the 'Information' panel.
-* Logic [2015-04-14] Correct handling of string and char constant in
logic pre-processing. Fixes bug #2101.
-* Logic [2015-04-14] Better overloading resolution.
Fixes bug #2098.
o! Logic [2015-04-08] Functions Db.Properties.Interp.lval and
Db.Properties.Interp.expr have been renamed (into term_lval
and term, respectively), and have a new signature.
-* Cil [2015-04-19] Fix parsing of packing directives of the form
'#pragma pack(push, N)'.
-! Value [2015-04-13] In -lib-entry mode, functions pointers no longer
force the generation of dummy functions. Instead, they are
initialized to NULL. Fixes bug #!2104.
- Kernel [2015-04-01] New API for backward dataflow propagation in file
Dataflows.
- Metrics [2015-03-25] New category 'Extern global variables', that can
be used to check whether some files are missing.
- Metrics [2015-03-24] Functions from Frama-C standard library are now
hidden by default.
-* Cil [2015-03-26] Switch statements in which some cases are not
constant expressions are now completely disallowed, as per the
C standard.
-* Cil [2015-03-21] Disallow all incomplete types for struct fields
Fixes bug #!1672.
-! Cil [2015-03-21] Parsing no longer accepts structures containing
incomplete types. Fixes bug #!2091.
- Kernel [2015-03-24] Special functions CEA_ have been removed.
-! Libc [2015-03-19] Most .c and .h files under /share have been merged
into /share/libc. Inclusions of builtin.h should be replaced by
__fc_builtin.h.
- Kernel [2015-03-18] New ACSL predicate \valid_read_string in
share/libc/__fc_string_axiomatic.h.
-! Value [2015-03-12] Terms involving l-values that are bit-fields are now
correctly handled.
- Cil [2015-03-19] Fix incorrect simplifications of '!E' to 0 when
E is either an enum with value 0 (bug #2090), or an expression
whose value wraps.
-! Kernel [2015-03-17] Removed option -no-dynlink.
- Kernel [2015-03-10] macro __FRAMAC__ is defined when pre-processing
C files in Frama-C.
o! Kernel [2015-03-10] AST change: split GVarDecl into GVarDecl and GFunDecl
o! GUI [2015-04-04] Constructor Pretty_source.PTermLval now has an
additional argument, the property in which the term appears.
- Defs [2015-04-04] L-values for which defs are queried are now evaluated
only for the callstacks that are currently active, resulting
in possibly less locations.
-! Value [2015-03-08] Fix bug in -memexec-all option in presence of
instructions where evaluation was guaranteed to fail.
-! Inout [2015-03-08] The inputs of an instruction whose evaluation always
fail include the sub-expressions for which evaluation succeeds.
- Kernel [2015-02-26] Added -no-tty option to disable terminal capabilities
- Value [2015-02-23] Faster treatment of imprecise struct copying and
left shifts in the logic.
o! Kernel [2015-02-22] Function Integer.two_power now raises an exception
for overly big arguments.
- Kernel [2015-02-20] Add new suffix '.ci' for pre-processed files
containing ACSL annotations to be pre-processed.
-! Value [2015-02-18] In synthetic results, for local variables that are
not those of the current function, the approximated values
encompass only the callstacks for which the variables were
in scope in one of the callers.
- Value [2015-02-18] Local variables that are in scope but not yet
initialized are now present in the environment.
-! Value [2015-02-15] Option -subdivide-float-var has been renamed into
-val-subdivide-non-linear, and has now an effect on non-linear
integer expressions.
o! Value [2015-02-15] Removed function Cvalue.V.min_and_max_float. Use
Cvalue.V.project_ival and Ival.min_and_max_float.
- Cil [2015-02-11] Function Printer.change_printer now allows composing
printers, and is called Printer.update_printer.
- GUI [2015-02-11] Variables are now left- and right- clickable in
the 'information' panel.
- Value [2015-01-31] Improved reduction by assertions of the form
\initialized(&t[0..N]) when N is above -plevel.
o! Kernel [2015-30-01] Fixed bug #!2012 about combining
Ast.is_last_decl and Kernel_function.get_global.
- Value [2015-01-26] New option -val-initialization-padding-globals to
specify how padding bits should be initialized. Option
-initialized-padding-globals is deprecated.
-* Value [2015-01-26] Fix initial state in which some volatile qualifiers
for nested types were ignored.
-* Value [2015-01-26] Fix incorrect initialization of padding bits.
Option -initialized-padding was ignored in some cases.
-* Cil [2014-01-26] Fix iterators on C99 designated initializers.
- Value [2015-01-26] Improvements to option -subdivide-float-var, when
subdividing may avoid the emission of an alarm.
- Value [2015-01-21] Support for \subset predicate.
##########################################
Open Source Release 11.0 (Sodium-20150201)
##########################################
- Kernel [2015-02-01] Tests are added to the distrib (make tests).
-* Logic [2015-02-09] The ACSL parser accepts qualifiers in logic C types.
- Value [2015-01-07] Special functions CEA_ are deprecated. Use
Frama_C_show_each or Frama_C_dump_each instead.
- Kernel [2014-12-28] Improve pretty-printing of some loops.
-* Kernel [2014-12-16] -load-module M now works fine if M uses the API
of another plug-in (bts #!1824).
-! Cil [2014-12-09] Default preprocessing command now includes Frama-C's
standard library, and when possible sets option '-nostdinc'.
See options -frama-c-stdlib and -cpp-gnu-like.
*! Cil [2014-12-09] Variables __FC_MACHDEP_FOO_BAR are now automatically
positioned when setting a non-standard machdep and using Frama-C's
standard library.
- Cil [2014-12-09] Option -pp-annot should be much faster when parsing
files with many ACSL annotations.
- Logic [2014-11-28] The ACSL parser now ignores /*@{ and /*@} comments,
to avoid conflicting with Doxygen.
- Value [2014-11-10] Accesses to locations that contain garbled mix now
cause the garbled mix to be reduced to the set of valid locations.
- Value [2014-11-07] Accesses to '*(foo *)p' may now reduce p according
to the validity of the access, when useful.
- Value [2014-11-07] Removed message "assigning non-deterministic
value from the first time".
- Value [2014-10-28] Option -slevel-merge-after-loop renamed to
-val-slevel-merge-after-loop. Now takes a set of kernel functions
as an argument.
- Value [2014-10-24] Per-callstack results are now always computed.
Option -val-callstack-results is deprecated.
- From [2014-10-24] New option -from-verify-assigns to give assigns/from
clauses of function with bodies a validity status.
-! Value [2014-10-24] Logic ranges are now evaluated using a dedicated
lattice. Results are almost always more precise, and the analysis
faster.
-* Kernel [2014-10-23] allow dynamically loaded module to start with a
lower-case letter. Fixes #1276.
-* Value [2014-10-15] Improved precision for variables that are reduced
(but not written) during a call memorized by option -memexec-all
- Value [2014-10-15] Indeterminate bits copied when option
-val-warn-copy-indeterminate is active now cause a reduction in
the source location.
- Value [2014-10-15] Arguments of functions that give rise to an alarm
are now reduced when possible.
- Value [2014-09-26] Reduce arguments of a function according to the
possible values of the formal at the end of the call.
- Value [2014-09-26] Better precision when a scalar value is written
through a garbled mix.
o! Value [2014-09-26] Remove experimental support for periodic bases.
-* Value [2014-09-25] Fix bug when writing precise values at too many
locations in packed arrays.
-* Value [2014-09-19] When for missing '\from' clause for '\result' when
result is used in a postcondition. Fixes bug #1908.
o! Value [2014-08-29] Garbled mix (constructor Top in modules
Location_Bits/Bytes) now explicitly mention the NULL base.
- Kernel [2014-08-15] New option '-then-last', which behaves like
'-then-on' on the last project created by a program transformer.
-* Value [2014-07-27] Text-only alarms that used the '\defined' predicate
(to warn about dereferencing pointers to out-of-scope variables)
are now emitted with the '\dangling_contents predicate.
- Logic [2014-07-27] The ACSL predicate '\specified', which has been
renamed to '!\dangling_contents' is now supported.
o! Value [2014-07-22] Value 'empty' is no longer exported in module
Offsetmap. The API should prevent any accidental creation.
- Inout [2014-07-22] Remove undocumented option -access-path
o! Value [2014-07-22] Most iterators of module Lmap and Cvalue.Model
now accept only the non-bottom and non-top cases.
o! Value [2014-07-22] API of module Cvalue.V_Or_Uninitialized is now
type-safe. Replace all occurrences of 'get_flags v' by 'v'.
o! Value [2014-07-22] Improve and clarify the return conventions of modules
Offsetmap, Lmap, Cvalue.V_Offsetmap and Cvalue.Model, by returning
three cases: `Bottom, `Top and `Map. The latter case indicates
the operation succeeded precisely'.
o! Value [2014-07-22] Functions find_base and find_base_or_default in
modules Lmap and Cvalue.Model now return an optional type, to
account for invalid bases (that may not be present in the map).
o! Value [2014-07-22] Some functions of modules Offsetmap, Lmap,
Cvalue.V_Offsetmap and Cvalue.Model now require a separate
Locations.Location_Bits.t and (integer) size, instead of a
Locations.location. This avoids errors when the case was
Int_Base.Top.
o Value [2014-07-22] Argument ~conflate_bottom to Cvalue.Model.find is now
optional. The documentation has been updated to better explain its
meaning.
- Value [2014-07-22] Message 'extracting bits of a pointer' is no longer
emitted, as it was redundant with the warnings about garbled mix.
-* Value [2014-07-22] Fix evaluation of '/' in the logic, that silently
ignored the presence of the value 0 in the divisor.
- Value [2014-07-22] The arguments of an invalid shift operation are now
reduced so that they belong to the proper range.
o! Value [2014-07-22] Multiple low-level functions have been removed from
modules Cvalue.V and Cvalue.Model, and are no longer available.
o! Value [2014-07-22] Function Cvalue.Model.find does *not* signal its
result is indeterminate anymore. Use function
Cvalue.Model.find_unspecified instead.
o! Value [2014-07-22] Major API change in directories src/ai and
src/memory_state. Functions no longer take ~with_alarms arguments.
Instead, they return booleans, that indicate an alarm occurred.
- Value [2014-07-22] More systematic emission of message 'operation [...]
incurs a loss of precision', signaling an arithmetic operation
on a pointer address. This message is now emitted by Value itself.
-! Kernel [2014-07-09] New way to handle command line options which
accepts sets of values. Values may be prefixed by '+' or
'-' to add/remove them and categories of values prefixed by
'@' are available as well (for instance @all).
o! Kernel [2014-07-09] A new bunch of functors are available to
define command line collections.
o! Cil [2014-07-03] Field 'vgenerated' of type Cil_types.varinfo has
been replaced by the field 'vtemp' to emphasize the fact that
it should only be set to true for temp variables generated
during elaboration.
o Cil [2014-06-27] Variables are created with a field 'vgenerated' set
to 'false' by default. Only Cil should position this field to
'true'.
o! Cil [2014-06-27] The field 'vlogic' of type Cil_types.varinfo has
been replaced by the field 'vsource', to avoid confusion with
logic variables. The value of the new field is the negation of
the previous one.
-! Cil [2014-06-17] Frama-C's x86 default machdeps no longer assume that
the compiler is GCC. Some typing extensions and builtin are thus
deactivated. If you want a GCC-centric analysis, use the
gcc-prefixed machdeps.
o! Cil [2014-06-17] Modifications in some fields of type Cil_types.mach.
Function File.new_machdep has a simpler type.
- Value [2014-06-17] Option -val-split-return can now be used to split
between NULL / non-NULL pointers
- Kernel [2014-06-16] New option -const-readonly (set by default), that
asserts that 'const' variables must never be written.
- Logic [2014-06-16] New logic label "Init", that refers to the state
just after the initialization of globals.
- Cil [2014-06-16] Values extracted from initializers of const variables
are now accepted as arguments of directives pragma loop UNROLL.
- Logic [2014-06-16] New builtin functions \min and \max of type
Set(Integer) -> Int
- Semantic Constant Folding [2014-06-12] Reducing the number of introduced
casts; feature #!1787.
- Value [2014-06-07] Improve conversion of float values that have been
written as integers (through low-level memory accesses)
- Value [2014-06-06] Improved pretty-printing of variables containing
pointers.
-* Makefile [2014-06-05] Do not install ZArith with Frama-C anymore.
o* Makefile [2014-06-05] Fixed compilation bug for plug-ins with both a
GUI and a non-empty API (bug #!1798).
- Value [2014-06-01] Improved widening on variables that are used to
access an array
- Value [2014-05-27] The GUI now showns the value of logic l-values
inside function specifications. They are evaluated in the
pre-state of the function, before the evaluation of preconditions.
o Gui [2014-05-27] Logic l-values inside function specifications can
now be selected
* Slicing [2014-05-23] Fix issues about slicing calls to the main function
and journalization (bug #!1684).
- Kernel [2014-05-22] Nicer error message in case of code
incompatibility when loading a plug-in.
-* Kernel [2014-05-15] Fix bug #1765 (spelling errors).
-* Slicing [2014-05-14] Fix crashes about multiple slicing pragma inside a
function (bug #1768).
- Report [2014-04-07] New option -report-callsite-preconditions.
- Report [2014-04-07] More consistent behavior when option -report-untried
is not set.
- Report [2014-04-07] Better reporting of reachability statuses; do not
coalesce unproven reachability assertions with other alarms.
- Value [2014-04-05] When option -val-callstack-results is set, the GUI
now displays a callstacks-wide consolidation of the possibles
values for expressions and terms. Previously, the potentially
less precise summary state was used.
- From [2014-04-05] Major performance improvements on big analyses.
-! Value [2014-04-05] Complete rewrite of the modules Int_Intervals and
Offsetmap_bitwise; both are now implemented with the same
datastructure as Offsetmap. Many performance improvements.
Many changes in the API of module Offsetmap_bitwise. Few changes
in Int_Intervals, but the englobing module Lattice_Interval_Set
has been removed.
- Gui [2014-03-27] New option -gui-project to run the GUI in a
given project.
- Semantic Constant Folding [2014-03-25] Reducing the number of introduced
casts; feature issue #!1697.
- Semantic Constant Folding [2014-03-25] New option -scf-project-name.
o! Cil [2014-03-24] The ikind for Cil.kinteger64 is now optional.
- Value [2014-03-20] File-scope and formal const variables are read-only.
Any possibility of writing there is treated as alarm.
-! Gui [2014-03-14] C expressions can now be selected through the source
-* Cil [2014-03-13] Fix erroneous integral promotion of type 'char' on
architectures where 'char' is unsigned.
- Semantic Constant Folding [2014-03-13] Generate nicer constants for integers
and pointers
- Semantic Constant Folding [2014-03-13] Floating-point constants can now
be propagated.
-* Semantic Constant Folding [2014-03-13] Fix crashes and/or multiple declations
when a global was referenced in the constant-folded project
earlier than in the original one.
- Value [2014-03-12] Improve precision of &.
o Logic [2014-03-04] Annotations.{iter,fold}_all_code_annot are now
by default sorted. Use ~sorted:false in case of efficiency issues.
-* Value [2014-03-02] Dividing an integer value by a memory address
requires the address to be comparable to NULL.
- Value [2014-03-02] Alarms are now re-evaluated at the end of the
analysis. If their truth value is 'Valid' or 'Invalid', this more
precise status is used, instead of the previous 'Unknown' one.
- Value [2014-03-01] Preconditions of functions that are never called are
now also marked as dead at each call-site.
- Rte [2014-03-01] Very big floating-point constants that are converted
to an integer are now reported as overflowing in only one
direction
- Value [2014-03-01] Alarms when converting integers to floating-point
are now reported only for the range that overflows
- Value [2014-03-01] Instructions whose execution is guaranteed to fail
are now displayed in the GUI
- Value [2014-03-01] Option -val-after-results is now always active by
default, and can no longer be unset
-! Kernel [2014-05-12] require ocamlgraph version 1.8.5
- Kernel [2014-08-07] add instructions for downloading the manuals
-* Configure [2014-03-17] use the gcc from the configure for compiling c files
-* Configure [2014-03-10] fix for autoconf < 2.67 when checking ability
of default pre-processor to keep comments
########################################
Open Source Release 10.0 (Neon-20140301)
########################################
-* Value [2014-03-04] Fix bug when writing imprecisely in a struct
containing a 1-bit wide bitfield (bug #!1671)
-* Kernel [2014-02-18] Fix -machdep help in presence of other actions
(bts #1643).
+* Logic [2014-02-05] Better handling of sets. Use Tlogic_coerce to
explicitly mark conversion from singleton to set.
- Kernel [2014-02-04] Assigns clauses generated by the kernel for functions
with neither a specification nor a body receive an 'Unknown'
status.
- Value [2014-02-05] For functions for which only the specification is
available, non-invalid statuses are no longer reported when
evaluating a postcondition. Invalid statuses are reported, and
usually indicate a specification error.
-* Kernel [2014-02-05] Fix typing of variadic arguments.
- Configure [2014-02-05] New option --disable-local-ocamlgraph to
disable the use of the OcamlGraph version provided by
Frama-C.
-* Value [2014-02-04] Fix potential unsoundness in the operation testing
the inclusion of two memory states (never observed in practice)
o! Kernel [2014-02-03] The module Parameter_state now contains the
functions to select group of parameters (was in module Plugin).
o! Kernel [2014-02-03] The module Parameter_customize now contains the
functions to customize command line options (was in module
Plugin).
o! Kernel [2014-02-03] Parameter is now called Typed_parameter.
o! Kernel [2014-02-03] The module Parameter_sig now contains the
signatures of command line options (was in module Plugin).
- Kernel [2014-02-03] FRAMAC_PLUGIN may now specify a list of
comma-separated directories instead of a single one.
o* Logic [2014-01-30] Better specification and more checks on
Annotations.{add,remove}_* functions (fixes bug #!1635).
o! Kernel [2014-01-29] Changes to the signatures in lattice_type: top and
bottom are now optional, a join_and_is_included function is
required, and Upper_Semi_Lattice was renamed to Join_Semi_Lattice.
-* Value [2014-01-25] Remove support for ACSL \inter operator, which could
lead to unsoundness with predicates involving the empty set
(fixes bug #!1624)
- Value [2014-01-25] Fix spurious messages about integer overflow when an
arithmetic operation is guaranteed to result in an undefined
behavior.
o! Kernel [2014-01-21] Removed Db.Dominators. Use the Dominators kernel
module instead.
-* Value [2014-01-18] Fixed spurious warning about floating-point values
containing addresses.
-* Kernel [2014-01-18] Fixed parsing bug with decimal single-precision
floating-point literals representing numbers above MAX_FLOAT.
-! Value [2014-01-16] Replace mostly-inoperant option -memory-footprint
by an environment variable FRAMA_C_MEMORY_FOOTPRINT
o Ptests [2014-01-16] Use ptests.opt whenever possible.
o! Kernel [2014-01-14] For building a datatype, you now need to use
smart constructors provided in Structural_descr.
-* From [2014-01-11] Fix incorrect dependencies with code of the form
'f(); x = 1; f();' when f assigns a value with a right-hand side
that depends on x.
-* Value [2014-01-11] Fix missing read/written zones and dependencies when
accessing a completely imprecise pointer (garbled mix) and using
option -absolute-valid-range. Impacts the results of plugins
Inout, From, Pdg, Impact and Slicing.
o! Value [2014-01-08] Harmonisation and simplifications of functions
related to memory states in Cvalue.Model. Different functions
are now available for updating, refining and creating a state
-* Value [2014-01-07] Fix crash on analyses involving very imprecise
pointers and a partially valid absolute memory range
-* Cil [2014-01-06] Fixes issue #1589 (do not drop access to volatile
lvals in pure expressions).
- From [2014-01-01] Fix possibly invalid dependencies for functions
that return partially-written structs.
o Kernel [2013-12-23] Plug-ins may now have a non-empty .mli interface.
It deprecates the old way to register them through module Db
or Dynamic (this last one may remain useful for mutually
recursive plug-ins).
-* Value [2013-12-23] Fix possible unsoundness in presence of &.
(unsoundness never observed in practice)
- Value [2013-12-23] Improve precision of treatment of x = e1 & e2;
- Value [2013-12-23] Improve precision of treatment of:
if ((int)floatvar == intexpr)
- Value [2013-12-13] Ensure convergence in presence of some non-natural
-* Cil [2013-12-12] Do not pretty-print while(1) into while(c) when
the 'break' branch is not reduced to a single break, or contains
an annotation
-! Syntactic_callgraph [2013-12-10] Remove option -cg-services-only which
was unused since a while.
-* Value [2013-12-09] Fix rare crash during widening operation in
C union intensive code
-* Value [2013-12-03] Fix potentially invalid source line number in origin
of Merge garbled mix values.
- Value [2013-12-03] Display information about temporaries when emitting
- Kernel [2013-12-03] "-machdep help" now specifies the default
machdep (bts #!1558).
- Obfuscator [2013-12-03] New option -obfuscator-string-dictionary to generate
the dictionary of literal strings into a separated file.
- Obfuscator [2013-12-03] New option -obfuscator-dictionary to generate
the dictionary into a file.
-* Kernel [2013-12-03] Fix bug which may occur when pretty printing
range of terms.
- Obfuscator [2013-12-03] Warn about unobfuscated symbols.
- Obfuscator [2013-12-03] Handle literal strings in a separate dictionary
(bts #!1564).
-* Obfuscator [2013-12-03] Now properly handle option -ocode.
- Obfuscator [2013-12-02] Obfuscate (most of) logical constructs (bts #1563).
- Obfuscator [2013-12-02] Obfuscate labels (bts #1562).
- Obfuscator [2013-12-02] Print the category which each symbol belongs to
(bts #!1566).
-! Value [2013-12-01] Volatile pointers are now modeled as the base
addresses that are stored into the pointer, shifted by an
unspecified offset.
o! Value [2013-11-28] Functions previously required by some functors in
directories src/ai and src/memory_state are no longer needed.
Use script bin/fluorine2neon.sh for partially automatic migration.
- Scope [2013-11-27] Option -inout-callwise can be used to improve
the precision of computations, including the effects of option
-remove-redundant-alarms. Option -calldeps is no longer necessary
- Value [2013-11-27] Experimental option -slevel-merge-after-loop
- Value [2013-11-25] Improve precision of bitwise conversion from
floating-point value to integers
-* Value [2013-11-22] Ensures that sqrt(-0.) is -0., even with buggy
MSVC runtime. Fixes bug #!1396
- Kernel [2013-11-20] Support for binary literal constants in C and
in logic denoted by '0[bB][01]+' (common ISO/C extension).
- Value [2013-11-14] Copies of non-struct left-values that contain
indeterminate bits can now be reported using option
-val-warn-copy-indeterminate.
-! Value [2013-11-14] Passing a struct containing uninitialized fields
or padding bits to a function without a body no longer raises
an alarm.
- Value [2013-11-14] The option -val-left-shift-negative-alarms has been
renamed into -val-warn-left-shift-negative
-! Value [2013-11-14] Pointer subtraction now requires that the pointers
refer to the same allocated block, and returns the pointwise
difference between the corresponding offsets. Use
-no-val-warn-pointer-subtraction to obtain the previous behavior.
-! Value [2013-11-13] No alarms are emitted for overflowing unsigned
left shift operations.
-* Rte [2013-11-13] No assertions are generated for unsigned left-shift
that may overflow, regardless of whether -warn-unsigned-overflow
is set. Fixes issue #!1555.
-* Value [2013-11-13] Prevent GUI crashes when options -no-results or
-obviously-terminates are set and some functions have
ACSL preconditions
-* Value [2013-11-12] Fixed bug involving the conversion to
float of a double expression e s.t. 0 < fabs(e) <= 0x1.0p-150.
-* Kernel [2013-11-12] The parsed value could be wrong and the warning
for inexact decimal floating-point constants be wrongly omitted
for constants smaller than the smallest subnormal.
-* Logic [2013-11-08] Support for _Bool in ACSL formulas
-! From [2013-11-08] Separately compute data dependencies and indirect
(address, control) dependencies with option -show-indirect-deps
o Kernel [2013-11-08] parameters can be preserved across project creation
through copy visitor (do_not_reset_on_copy function). fixes
do_not_projectify and do_not_reset_on_copy status of
Kernel's options.
-* Logic [2013-11-06] do not cast an enum value toward its associated
integral type when comparing to an enum constant. Fixes #!1546
-* Kernel [2013-11-06] Fixes loop unrolling having in their body 'switch'
with 'continue' stmts.
- Report [2013-11-05] New option -report-untried
-*! Logic [2013-10-29] -check checks that C and associated logic variable
agree on their type. transfer completion of type up to
associated logic var and term when needed. Fixes #1538
-* Logic [2013-10-29] Do not remove labels out of scope of annotations
too quickly. Fixes #1536
-* Kernel [2013-10-29] Do not fail on nested ternary operators whose
value is dropped, as in #1503
-* Logic [2013-10-29] Accept struct with same name as typedef in specs.
Fixes #1518
-* Kernel [2013-10-29] Do not consider array variable as read lval in
unspecified sequence. It can't be written anyway. Fixes #!1519
o* Value [2013-10-27] Type Base.string_id is now concrete. No more need
for function Base.cstring_of_string_id
-* RTE [2013-10-28] Better normalization when using -rte-precond.
- Kernel [2013-10-27] Generate more aggressive assigns clauses for
unspecified library functions that arguments with type pointer
to void or char
-* Kernel [2013-10-26] Do not generate invalid assigns clauses when some
formals are pointers to arrays
- Kernel [2013-10-22] Support for static evaluation of the
__builtin_compatible_p GCC specific function.
- Kernel [2013-10-22] Add -aggressive-merging option to merge two
inline functions if they are equal modulo alpha conversion.
-* Kernel [2013-10-17] Correctly distinguish typenames and declared
identifiers in declarations. Fixes #1500
-* Kernel [2013-10-17] Statements with a label attached to them are
never erased during elaboration. Fixes #1502.
-* Slicing [2013-10-17] Slicing is now compatible with option -val-use-spec
- From [2013-10-15] Better precision when querying information about
a zone that has the same dependencies as its neighbors.
o! Value [2013-10-15] Function Map_Lattice.Make requires a new argument
- Value [2013-10-14] Evaluation of left-values such as t[i][j] or
p->arr[i] is now more precise when the total number of locations
to read or write is less than the value of -plevel option
- Value [2013-10-13] Syntactic loops (ie. 'for', 'while' and
'do ... while') are now always used to perform widening,
regardless of whether they are reducible
-! Impact [2013-10-11] More generic dynamic function impact_statement_gui.
The set of nodes impacted can now be filtered by a memory zone.
-! Journal [2013-10-09] By default, the journal is now generated into
the Frama-C session directory.
o*! Makefile [2013-10-03] Split Makefile.common in two parts in order to
include generic rules (new Makefile.generic file) at the end
of main Makefile, so specialized patterns will be considered
first in make < v3.82
-*! Logic [2013-10-02] Disallow cyclic logic type definitions
-! Gui [2013-10-01] the configuration file .frama-c-gui.config is
now put in the GUI config directory and named frama-c-gui.config.
o Kernel [2013-10-01] Plug-ins may now have their own configuration
directory in which they can generate configuration files
during a Frama-C session.
o Kernel [2013-09-30] Plug-ins may now have their own session
directory in which they can generate project-dependent files
during a Frama-C session.
o* Doc [2013-09-27] Fix ugly display of documentation of dynamic
plug-ins API (bts #!1394).
-* Value [2013-09-26] Fix crash when evaluating \valid(p->off) when
p is NULL or a valid pointer, and p->off is itself only partially
valid (bug #1486).
-* Kernel [2013-09-26] Reject identifiers in the same namespace and same
scope, according to C standard's rules. fixes bug #1330.
o! Kernel [2013-09-26] Alpha.{new,register}AlphaName: transform labelled
argument 'undolist' with option type into optional argument.
-* Kernel [2013-09-26] Fixes issue #1451 about -unicode which was not
taken into account by -load-script.
-* Kernel [2013-09-24] Fixes binding of formals when linking static
prototypes. Fixes issue #1475
o* Scope [2013-09-21] Functions registered in Db now return Stmt.Hptset
values instead of Stmt.Set
o* Value [2013-09-21] Minor signature change for widening functions
- Metrics [2013-09-19] More precise information about coverage
-o Value [2013-09-18] Fix bug in which two distinct memory states could be
erroneously made equal
-* Slicing [2013-09-12] Slicing on a composite statement containing dead
code now works properly
o* PDG [2013-09-12] Function Db.Pdg.find_stmt_and_blocks_nodes
returns a correct result on partially dead composite statements
- Slicing [2013-09-12] -slice-calls main only selects the calls to the
main function, nothing more.
o* Kernel [2013-09-11] Fixed buggy function Property.location.
- Logic [2013-09-10] Improve localisation of error messages during
logic typing.
- Value [2013-09-07] Degeneration points are now shown in the GUI
- Value [2013-09-07] Value analysis can now be aborted while keeping
intermediate results, by sending SIGUSR1 to Frama-C
- Value [2013-09-06] More aggressive evaluation of \initialized(p)
when p points to a memory zone containing both bottom and
non-bottom values
o! Value [2013-09-06] Function Cvalue.Model.find_unspecified now requires
one additional argument ~conflate_bottom
- Value [2013-09-06] Warn for missing '\from' or 'assigns \result \from'
clauses. Fixes wish #1448
-* Logic [2013-09-02] Conversion from C array to pointers do not lose
cast on pointed types. Fixes issue #1469
o* Cil [2013-08-30] Terms containing ACSL keywords are now properly
parsed by function Logic_lexer.lexpr
o* Cil [2013-08-26] Statements containing calls to va_start can now be
printed outside of a function
-* Pdg [2013-08-26] Fix possible non-termination during the computation
of the control dependencies (bug #1436)
- Metrics [2013-07-29] ACSL statistics
-! Value [2013-07-24] Fewer and better widening bounds for pointer
addresses: try the frontier of the block
-! Value [2013-07-24] Better widening bound for signed 32 bits integers
-* Kernel [2013-07-18] More clever merge of function contracts.
Fixes issue #1455
o Lib [2013-07-18] Filepath.normalize can replace paths by a symbolic
o Ptests [2013-07-16] add the possibility to define macros in
configurations. See developer documentation.
-* Kernel [2013-07-11] designated initializers are correctly pretty-printed.
Fixes issue #1457
-* Semantic Constant Folding [2013-07-10] Fixes error when folding fct pointer
resulting in two distinct kf for the same function.
o* Kernel [2013-07-08] Cil.mkEmptyStmt gets a valid_sid argument in
order to generate valid statements.
-* Kernel [2013-07-05] Tmp vars created during typecheck all have a
description. Fixes bug #!1387
-* Kernel [2013-07-04] more informative error message. Fixes bug #1352
-* Kernel [2013-07-04] implicit annotation status is not lost through
code transformations anymore. Fixes bug #!1442
o Kernel [2013-07-04] Added hooks when registering/removing a property
o Kernel [2013-07-03] Added StringList.append_{before,after} for
manipulating options (both static and dynamic API)
- Kernel [2013-06-27] An 'unknown' local status is set on assigns generated
from the C prototype of leaf functions
o Kernel [2013-06-25] Add hooks to register transformation to be performed
on a freshly computed AST. See src/kernel/file.mli
o Kernel [2013-06-25] Add hook builders for hooks that can have
dependencies. See src/lib/hook.mli
o Kernel [2013-06-21] adding a category do not set debugging level to 1.
Conversely debug ~dkey "..." (without ~level) will output "..."
if dkey is requested by the user, even if debugging level is 0.
-* From [2013-06-21] Position the 'and SELF' flag when an assigns clause
z1 and z2 overlap in an assigns clause z1 \from z2 .
- Value [2013-06-21] Better documentation of module Hptmap. Some
incompatible API changes.
- From [2013-06-20] Slowndowns in the analyses can be mitigated using
higher values for option -memory-footprint
- Value [2013-06-20] Option -memory-footprint now accepts much bigger
arguments. The size allocated to each cache is multiplied
by 2 between each increment.
-! Kernel [2013-06-20] Renamed argument ~cache of functions cached_fold
into ~cache_name. The previous integer is no longer used.
-* Kernel [2013-06-20] Fix consolidation algorithm of property statuses
which possibly occurs on cycles involving an unproved property
(bts #1443).
-* Kernel [2013-06-20] Fix incorrect dot output of consolidation graph
of property statuses.
-* Kernel [2013-06-19] Fix pretty-printing of comments in ghost code
(bts #1378 and #1404).
- RTE [2013-06-18] Remove limitation about alarms which do not fit
into 64 bits (bts #1391).
- Kernel [2013-06-18] Better strategy when -save is set and Frama-C
crashes (bts #1388).
-* Project [2013-06-17] Fix messages about projects.
-* Slicing [2013-06-17] Fix crash in presence of assertions involving
sizeof(t), where t is an array. Fixes similar bug with option
-remove-redudant-alarms
-! Inout [2013-06-13] Inputs of an instruction whose evaluation fails
now include the sub-expressions for which evaluation succeeds
-* Value [2013-06-12] Fix crash when the creation of the initial state
encounters a completely invalid compound initializer.
- Value [2013-06-11] The name of an evaluated property is now displayed
in the log message. Fixes wish #1415.
- Value [2013-06-11] Assertions on dead code now get a "true because
unreachable" status.
- Kernel [2013-06-23] The annotation 'loop pragma UNROLL "done", n;'
disables the unrolling of the annoted loop. Option -ulevel-force
has to to used for enabling the transformation of such a loop.
This pragma is introduced by the unrolling process in order to
prevent unrolling on source code obtained by a previous frama-C
run.
- Value [2013-06-05] Preliminary support on \forall and \exists
quantification when the introduced variables have a C type.
o! Value [2013-06-05] API change in module Base. Use script
bin/fluorine2neon.sh for automatic migration.
- Value [2013-05-26] Evaluation of \base_addr, \offset and \block_length
logic predicates.
o! Cil [2013-05-26] Rename function sizeOf_int into bytesSizeOf.
- Value [2013-05-26] Basic support for \inter logical predicate (treated
as an union).
- Value [2013-05-25] Distinguish unreachable state and invalid location
when printing the value of a l-value in the GUI
- Value [2013-05-25] Frama_C_show_foo functions now display struct
arguments in extenso.
-* Value [2013-05-24] Failure during a memory zone copy is now properly
notified. Alarms were emitted, but a non-bottom result was
simultaneously returned.
- Slicing [2013-05-24] Better slicing of complex logical assertions
(bug #690).
o! Value [2013-05-23] Do not crash when printing arrays or structs
containing abstract structs (bug #1416).
-! Kernel [2013-05-20] Support parsing and printing "asm goto" from gcc 4.6.
Added a component to Cil_types.Asm constructor.
- Pdg [2013-05-03] Shorter output when outputting results
o! Pdg [2013-05-03] Results of Pdg cannot be intercepted by
Log.add_listener anymore. Use Db.Pdg.get and Db.Pdg.pretty
instead.
o! From [2013-05-03] Results of From cannot be intercepted by
Log.add_listener anymore. Use Db.From.{pretty,display} to print
them.
o! Value [2013-05-03] Results of Value cannot be intercepted by
Log.add_listener anymore. Use Db.Value.display to print them
o! Value [2013-05-03] Remove functions Cvalue.Model.pretty_without_null and
Db.Value.display_globals. Function Db.Value.display is now a
reference to the real function. Removed last argument of
Cvalue.Model.pretty_filter.
###########################################
Open Source Release 9.2 (Fluorine-20130601)
###########################################
-* Value [2013-06-11] Add missing C library files.
###########################################
Open Source Release 9.1 (Fluorine-20130501)
###########################################
- Value [2013-05-22] Better precision for ^ (bitwise xor) operator
when applied on intervals of positive integers
-* RTE [2013-05-22] Fix off-by-one error in alarms on overflowing
unsigned unary minuses.
-* Value [2013-05-21] Catch evaluation errors when selecting a logic
l-value in the GUI.
o* Kernel [2013-05-06] Fixed Type.pp_ml_name for polymorphic types
with 3 and 4 type variables (bug #1127).
-* Makefile [2013-05-06] Fixed installation directory of the doc in
plug-in's Makefile (bug #1278).
###########################################
Open Source Release 9.0 (Fluorine-20130401)
###########################################
o! Cil [2013-04-11] Remove Cil pretty-printer. Use module Printer
instead. The script bin/oxygen2fluorine.sh may be used to
automatically convert your code.
- Cil [2013-04-09] Handles interpretation of linemarker ending by //
and cleanup file paths.
- Value [2013-03-26] Highlight non-terminating calls.
- Value [2013-03-26] The location in which the result of a call is stored
is now evaluated before the call. A warning is emitted if this
location has changed after the call.
- Logic [2013-03-26] Improved merge strategy for assigns, and report
the presence of different assigns clauses between two files.
- Value [2013-03-23] Better precision for postconditions in functions
with multiple return analyzed without slevel.
-* Value [2013-03-20] Fix incorrect interpretation of \valid{L}(P) when
L is not Here label.
-! Value [2013-03-20] The first element of a -lib-entry allocated array,
or of an array passed as an argument to main, is now valid
regardless of option -valid-context-pointers.
-* Slicing [2013-03-18] Fix incorrectness in presence of assertions involving
\initialized predicate. User predicates are no longer treated.
-* Value [2013-03-15] Fix incorrectness of option -remove-redundant-alarms
in presence of '\initialized(...)' alarms.
- Value [2013-03-15] Optionally warn against unsigned overflows according
to option -warn-unsigned-overflow.
- Cil [2013-03-14] The type of fields that are bit-fields now carry an
informative attribute FRAMA_C_BITFIELD_SIZE.
-* Value [2013-03-09] Fixed misleading "after statement" state on
statements followed by an assertion.
-* Value [2013-03-09] Option -memexec is now correct in presence of RTE
-! Value [2013-03-09] Consolidated states are now stored before 'assert'
clauses are evaluatued.
-* Slicing [2013-03-03] Fix options -slice-assert and -slice-threat
(-threat did nothing, -assert selected all alarms).
-! Sparecode [2013-03-03] Alarms are now ignored during the analysis.
-* Value [2013-03-03] Fix incorrect reduction in integers containing
pointers address when option -warn-signed-overflow is set.
-! Value [2013-03-03] Signed overflows now cause an alarm. Option
-no-warn-signed-overflow can be used to get 2's complement.
-! Kernel [2013-03-03] Signed overflow alarms are now emitted by default.
-! Kernel [2013-03-03] Signed downcast alarms are no longer emitted by
default. Use option -warn-signed-downcast to activate them.
- Kernel [2013-03-02] Print signed downcast alarms as 'signed_downcast'
-! Value [2013-03-02] Removed option -val-signed-overflow-alarms.
Use -warn-signed-overflow instead.
-! Rte [2013-03-02] Removed options -rte-signed, rte-unsigned-ov,
-rte-downcast and -rte-unsigned-downcast. They are replaced
by -warn-signed-overflow, -warn-unsigned-overflow,
-warn-signed-downcast and -warn-unsigned-downcast respectively.
-* Rte [2013-03-02] Added missing alarm for casts from overly large
floating-point numbers to integer. Fixes #!1318.
Loading
Loading full blame...